commit 18ee1ed3b3839d44e08e5aefd0e926d29d252654 Author: Shawn Betts Date: Fri Apr 24 15:28:27 2009 -0700 rename ratpoison-info and ratpoison-commands-info to remove name clash with ratpoison-cmd.el commit d605c07b966d541820805a4938b59242e315735f Author: Philip Hudson Date: Sun Apr 19 21:58:23 2009 +0100 in contrib/nogaps.el, placate the emacs Lisp byte-compiler and standardise the (require 'cl) line commit b890eb8b955edfa46acda6d7b4ff0ab7f15dcfab Author: Shawn Betts Date: Fri Apr 24 10:16:39 2009 -0700 in contrib/rpws don't create wspl1, since it already exist as the Default group. Also add a check to ensure the workspaces creates are at least 2. commit a4de27cea6f5bf937f9b282f0195c0e4763a185f Author: Shawn Betts Date: Mon Apr 13 05:50:35 2009 -0700 grab the keyboard and pointer in cmd_resize * fixes a bug that hangs rp: in resize mode, click firefox and rp hangs commit c7b3817c222952196b11825076c902d6dd1da455 Author: Shawn Betts Date: Mon Apr 13 05:33:47 2009 -0700 make ratinfo and ratrelinfo work with ratpoison -c and return coordinates relative to current frame when there's no window * update docs commit bd7aa51699f49cf7a67c403ba7f2ba3738fcf644 Author: Shawn Betts Date: Mon Apr 13 05:19:46 2009 -0700 fix segfault in banishrel and make it banish to the corner of the frame when there's no window * update documentation commit 300c05edf890fbe2de11070b9839359bef9916e1 Author: Shawn Betts Date: Mon Apr 13 05:04:18 2009 -0700 add texinfo documentation for ratinfo, ratrelinfo, banishrel commands commit 855d25f482c43a66a73026e62ff0da539acc67e8 Author: Rob Paisley Date: Fri Nov 28 13:14:07 2008 -0500 Add ratinfo, ratrelinfo, and banishrel commands commit e2282bd77f041430c510203365b18436a60d0586 Author: Hatem Nassrat Date: Mon Feb 23 09:57:18 2009 -0400 Allowing for next and prev workspace switching. commit 82be5b35eda82f8dd4b6e19940d6a7bee1b582ea Author: Shawn Date: Mon Apr 13 01:23:38 2009 -0700 resize the help window when a screen is resized commit 281aaf7b489d9ba89fdf5e39637cde287e83f9fa Author: Bernhard R. Link Date: Sat Jan 3 16:22:29 2009 +0100 set _net_wm_name for the root window to ratpoison commit ffae4bf9413bec7efd5d4821e030b63a700fab69 Author: Bernhard R. Link Date: Sat Jan 3 16:21:34 2009 +0100 Move screen activation code to new (de)activate_screen functions, making sure _NET atoms are reset after tmpwm and deleted when exiting. commit 9888fccffbc7d9f5680512b03ace6dd5fc325094 Author: Shawn Date: Tue Nov 18 15:46:48 2008 -0800 fix AUTO_CLOSE code in unmanage() commit 612b99640af64d28823d3a02cdcecf202b74940c Author: Shawn Date: Sat Nov 1 11:22:22 2008 -0700 in cmd_tmpwm wait for a second if it failed to re-select the root events. commit 75207d2e878250c2717174a22cc828c0aba5ba76 Author: Shawn Date: Sat Nov 1 10:29:44 2008 -0700 fix (i hope) the tmpwm race condition and the bug that sometimes keys don't work after tmpwm the race condition is fixed by spinning in a loop with a special error handler until it is confirmed that the root event selections were successfully. Existing windows don't get their top level keys grabbed, so after the windows are synced up, grab the top level keys on all windows. commit c0bee97912e5caf256441dbdc531f38fbe06d780 Author: Shawn Date: Wed Oct 22 14:28:45 2008 -0700 include limits.h for INT_MAX commit 970d09c36249834e63d529cfdfce0672dff25d99 Author: Bernhard R. Link Date: Sun Jun 15 17:56:10 2008 +0200 update documentation commit 086cf745280ff944a479508f806fa118839e166f Author: Bernhard R. Link Date: Sun Jun 15 15:40:37 2008 +0200 ignore non-existing libhistory unless --enable-history commit 1e4c576b14025d4e16e09110c31b1dec5dac85b9 Author: Bernhard R. Link Date: Sun Jun 15 15:02:03 2008 +0200 make history expansion an option (switched off by default) commit 4ca186ff04eb611db6b11aa0c06adda7f428d4f3 Author: Bernhard R. Link Date: Sun Jun 15 13:40:54 2008 +0200 remove libhistory history handling, only feed it on demand when doing ! expansion commit 7214b8c52e230fdb52a99ce1ed20092c6944dcd3 Author: Bernhard R. Link Date: Thu Jun 12 18:10:37 2008 +0200 add 'set historysize' and 'set historycompaction' (defaulting to true) to compact history commit 4a15061f631b5b85c0cff068407c51bfb315a497 Author: Bernhard R. Link Date: Thu Jun 12 12:20:06 2008 +0200 alternate history implementation when no libhistory is available commit 3737db1e6072c557748ba0ffcdca1e810b15009f Author: Bernhard R. Link Date: Tue Jun 10 15:40:50 2008 +0200 move all HAVE_HISTORY into history.c commit d11f0735321bc725441fbc1dec04e363d07c987a Author: Bernhard R. Link Date: Tue Jun 10 14:24:05 2008 +0200 SHELLCMD history only shows execute arguments, things to execute are stored as in history as execute commands commit d801644502adf42570e9a5b75fcaa013f613fc5a Author: Bernhard R. Link Date: Mon Jun 9 23:50:27 2008 +0200 define different history types and use them (implementation does not separate them yet, though) commit 22cea909c3d1b695424ef85153917b00bfb1261c Author: Antti Nykänen Date: Wed Oct 22 18:42:24 2008 +0300 return the correct value when set_barinpadding is called without arguments Currently, when you execute C-t : set barinpadding, you actually get the bar's border width. This patch fixes that. commit 96f9429650200ee4b9897a778a28954de772d151 Author: Shawn Date: Sun Oct 19 13:20:28 2008 -0700 update the NEWS file to reflect recent changes commit 443bd7387dce55812eabe970b4a267d9e626e9a0 Author: J.R. Mauro Date: Sun Oct 19 08:13:41 2008 -0400 add contrib/expose.pl commit 03f8bba45a8d1b0236731b4aece52795c0bc1326 Author: Ali Gholami Rudi Date: Sat Oct 18 08:05:15 2008 +0330 disallow duplicate group names commit 9ec3e80ad828e3eb35ce800b78fa73176d0d7c02 Author: Antti Nykänen Date: Thu Jun 26 16:57:16 2008 +0300 PID support for format_string commit 656481bd1b052137826d041347bd0a93592b96a0 Author: Ali Gholami Rudi Date: Sat Oct 11 09:40:12 2008 +0330 run switch group hooks after gdelete When current group is deleted, a new group is selected but switch group hooks are not run. This patch calls set_current_group() which runs those hooks. commit 4a180cb969833289eb2dd46548d594f6f37c8a87 Author: Ali Gholami Rudi Date: Sat Oct 11 09:39:18 2008 +0330 don't delete the last group Currently gdelete deletes the last group and creates a new empty group. This patch changes gdelete to show a message, instead. commit 098fc67c1a277286fc513ccb646e4054889063ab Author: Ali Gholami Rudi Date: Sat Oct 11 09:38:26 2008 +0330 select the last visited group after gdelete commit da60eaebff265bafae3c7be1dee5a585ff3e2198 Author: Shawn Date: Sun Oct 12 17:03:31 2008 -0700 change grename arg type to arg_REST commit 2557e59fc5ce7690d05856b04e0ea5aaff6f9f60 Author: Ali Gholami Rudi Date: Sat Oct 11 08:33:32 2008 +0330 add grename command commit 96f8765e306e2a5ed27546d2fec9b08613d369c2 Author: Bernhard R. Link Date: Sat Oct 11 13:30:58 2008 +0200 cmd_swap checks that both frames are on the same screen commit cdf47ffa11181bee433fd52f01fbc9d29f6d5323 Author: Shawn Date: Fri Oct 10 14:27:40 2008 -0700 document gother commit 1d291ecaf30bfa551086aabe02d065f07f00eff3 Author: Shawn Date: Fri Oct 10 14:23:17 2008 -0700 mark the last group in cmd_groups commit b57b21ee318287d035269cb526444a756a93cae9 Author: Ali Gholami Rudi Date: Sat Sep 20 22:18:43 2008 +0430 add gother command commit ddf7f1104af0663ba730b5b82607843fe988109e Author: Ali Gholami Rudi Date: Tue Sep 23 17:19:54 2008 +0330 src/actions.c: fix memory leak in cmd_groups() commit 2c2989660cb285509775acdf0950aab2ae6715db Author: Shawn Date: Fri Oct 10 13:45:43 2008 -0700 in get_net_wm_window_type, only call XFree on success This fixes a crash bug that was reproduced by running dolphin (the kde file manager). commit 8370ffefe77a74b17dd14b5d8e6544f677782bc3 Author: Shawn Date: Fri Oct 10 13:35:45 2008 -0700 bind nextscreen/prevscreen to C-t N and C-t P commit cc668c2218aad54cd27d1a8611de864372156cb0 Author: Shawn Date: Fri Oct 10 13:04:12 2008 -0700 choose a better approach to setting the border color in remove_frame * remove call to give_window_focus in remove_frame * set the border color in hide_window calling give_window_focus in remove_frame was plain incorrect. setting it in hide_window might be considered overkill but I believe it will catch this case and any others that might be lurking. commit 497fb323835bbb3cceb39874e7555b565863c7e8 Author: Kipling Inscore Date: Sun Aug 3 11:40:42 2008 -0700 allow window border color to be set seperately for focused and unfocused windows commit b47008536843fe9dfa5790581228f42d5c83ee80 Author: J.R. Mauro Date: Tue Jul 29 21:40:02 2008 -0400 clean up set_active_window_body() with 2 new helper functions commit dd86c8350d1ba3dd024240ae0b91c147aa42473d Author: Bernhard R. Link Date: Fri Oct 10 10:08:04 2008 +0200 doc/ratpoison.texi: fix argument order of execf commit 8a8b8d5618eaddd2be1fd6e3e716320e007406cd Author: Bernhard R. Link Date: Sun Jun 22 17:00:36 2008 +0200 document new %M in manpage commit dd36053ca5b842759aa2c5cc5f653a84a98cbd47 Author: Bernhard R. Link Date: Mon Jun 9 22:23:58 2008 +0200 make xstrdup argument const char* commit 845b825f3f16ae02c8083f046ef13d5c922efa40 Author: Bernhard R. Link Date: Mon Jun 9 11:22:27 2008 +0200 Mark command arguments as arg_COMMAND commit f75953fcce418773e3c552cefcee33034ab6dbdb Author: Bernhard R. Link Date: Mon Jun 9 10:59:25 2008 +0200 remove unused history_list_items function commit 4e08030acf10a54af36e92b14624257fbf0835a4 Author: Shawn Date: Fri Jun 20 14:01:39 2008 -0700 support the netwm dialog window type commit ea17008472c85c2c931336774335261b8394a691 Author: Shawn Date: Fri Jun 20 13:57:18 2008 -0700 add a maxsize formatter character to format_string commit 5df9409554d64c73736fb044d8baead78c9c938e Author: Shawn Betts Date: Mon Jun 16 19:15:20 2008 -0700 update copyright notice commit 040d4dbf7332d295b1c3078ded7c418ec396e8fa Author: Shawn Betts Date: Thu May 29 15:01:07 2008 -0700 don't grab the key if the keysym doesn't map to a keycode Also, remove the restriction that a keysym must have a keycode in order to be bound. commit d1f633382214f50e07cea482249ff9733fa7ded3 Author: Bernhard R. Link Date: Wed May 28 19:11:02 2008 +0200 Use AC_HELP_STRING for all help texts. commit 229ba0708073b0d02ab253290f224a91844f1b17 Author: Bernhard R. Link Date: Wed May 28 18:59:57 2008 +0200 Only check for xft.pc if xft is not disabled. If xft is explicitly requested, not finding it causes an error. The CPP and LD flags for the different libraries are put in specific variables and only added in the Makefile. commit bb3e3db9c29a478939394c612ab93f9d9cdc3bc8 Author: Shawn Date: Sun May 25 01:00:23 2008 -0700 update news and authors wrt xft commit 76c0bd55bd31b70bc0cbfd198613c09be4acd9b5 Author: Shawn Date: Sun May 25 01:00:11 2008 -0700 use PKG_CHECK_MODULES to detect xft commit bf8dc854fbb0c258c67735153c18903aeb467c60 Author: Shawn Date: Sun May 25 00:27:03 2008 -0700 don't free defaults.font when xft is enabled commit 8ff12976802745ddfd06b4016089b12a3182a86b Author: Shawn Date: Sun May 25 00:20:00 2008 -0700 properly indent calls to rp_text_width and rp_draw_string commit 98503f1fa2abd896c91a186c1f1670932a14ed63 Author: Shawn Date: Sun May 25 00:18:17 2008 -0700 change -1 to the proper string length in some calls to rp_text_width and rp_draw_string commit 4be06410d03bcbcde5707e317c321a482cb32214 Author: Shawn Date: Sat May 24 23:43:12 2008 -0700 fix whitespace errors in xft patch commit d37c7484ab881b0283fd4573235b24fe7d1e7af9 Author: Midare Kiyura Date: Sat May 24 16:04:33 2008 -0500 Add xft support commit c7ec59674cfe315f2a0ea54fc7444b4a6a6a8a67 Author: Bernhard R. Link Date: Fri May 2 10:10:43 2008 +0200 make read_any_key a proper prototype commit ede3fb4202ee1e8d397d2ec041bbfa927cf51d02 Merge: 9b98a44... 9120e78... Author: Shawn Date: Fri Apr 18 16:42:37 2008 -0700 Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison commit 9b98a448c43088603601e287794925039fd60429 Author: Shawn Date: Fri Apr 18 16:42:17 2008 -0700 fix off by one bug in rpws commit c2c4f2850606bb982350f0d7bae6b100a4d4a5de Author: Shawn Date: Fri Apr 18 16:42:00 2008 -0700 bump version to 1.4.4-GIT commit 59f03dada1682b5025cf7def0ec2dde5abdab83a Author: Shawn Date: Fri Apr 18 16:41:49 2008 -0700 add 1.4.3 news commit 9120e78541e6e58f0a859de8dfe0c1b00eb0f264 Author: Bernhard R. Link Date: Fri Feb 22 11:06:17 2008 +0100 remove AC_CANONICAL_HOST and bin-dist target as only user of it commit 0f793c3f0ba508afa251cab5cfd45fe79123584f Author: Bernhard R. Link Date: Thu Feb 21 15:20:41 2008 +0100 update debian/ directory commit 7f74fffef79e5e77f9b880a7cad8fc308e901709 Author: Bernhard R. Link Date: Thu Feb 21 14:26:18 2008 +0100 fix syntax errors in the manpage commit cc35f0778f427e43f00d735576e7044514950605 Author: Shawn Date: Tue Feb 19 16:53:23 2008 -0800 grab top level key bindings asynchronously commit fa2fa9692587a431399ce3786f3b1e970b5e244e Author: Shawn Betts Date: Mon Feb 11 23:16:07 2008 -0800 return a value in read_single_key commit 6ef6c4ddce5eec679d81c48c0f5b72ab04a388f2 Merge: a45a3c2... 4245904... Author: Shawn Betts Date: Mon Feb 11 23:13:39 2008 -0800 Merge branch 'master' of sabetts@git.sv.gnu.org:/srv/git/ratpoison commit a45a3c2cba130c6164088884d51af7545b7c671a Author: Shawn Betts Date: Mon Feb 11 23:12:09 2008 -0800 ifdef out Xtst library calls commit 42459044340ce1cb016a9a7d85e8c784f7e36979 Merge: bd51b17... 3793365... Author: Shawn Date: Wed Feb 6 16:50:28 2008 -0800 Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison commit bd51b1705292845686f8f682d15f6b7b90ddc787 Author: Shawn Date: Wed Feb 6 14:16:37 2008 -0800 Change the way input is read Before rp used xgrabkeyboard to read a key. Instead, the keyboard is frozen when a top level key is read. Then when rp reads a key it first sets the input focus to a suitable location such as key_window or input_window, then thaws the keyboard and waits for a keypress. When a key is pressed the keyboard is frozen again and the process repeats until ratpoison is done reading input. At that point the keyboard is thawed in a way that future keystrokes do not refreeze the keyboard. commit cbcc8f2882ac8985a027b5c8423b5e764c51c158 Author: Shawn Date: Wed Feb 6 14:13:45 2008 -0800 add TAGS to .gitignore commit 37933658a66f1d7f5cc00cbf83882b84cf8c8337 Author: Shawn Betts Date: Fri Dec 7 12:12:07 2007 -0800 call switchwin hook when a window in unmapped or destroyed commit c322af661de758faab2a8035d1dbfd64b36a5082 Author: Shawn Betts Date: Mon Oct 22 02:24:25 2007 -0700 bump the version number in the docs to 1.4.3 commit e0f6041ffe1bfa9cc0c347db7a60ba420f945134 Merge: c72f081... d384649... Author: Shawn Betts Date: Thu Oct 11 13:58:41 2007 -0700 Merge branch 'master' of sabetts@git.sv.gnu.org:/srv/git/ratpoison commit c72f0811c3c6f35183e7ced8b686411f329c8671 Author: Shawn Betts Date: Thu Oct 11 13:57:37 2007 -0700 Properly shell-escape ratpoison commands for perl bindings. commit d3846498579cbc5bbdf7cbf012e07a049488ed6a Merge: f30be19... f229711... Author: Shawn Betts Date: Mon Oct 8 17:26:54 2007 -0700 Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison commit f30be1924830a6afee9935b1a6ef094dd9471dfe Author: Shawn Betts Date: Mon Oct 8 17:26:17 2007 -0700 add more ignored files commit f229711cc2633a95d88c1b59c5a3e48c5800d2b4 Author: Bernhard R. Link Date: Mon Oct 8 13:02:58 2007 +0200 Update debian/ directory commit e3f4eb16ef7fce25da1e77b16b87525a724b9526 Author: Shawn Betts Date: Sat Oct 6 21:13:52 2007 -0700 bump version to 1.4.3-GIT commit 2dc366b17f298ec697e453e648213e29d9dea815 Author: Shawn Betts Date: Sat Oct 6 21:13:21 2007 -0700 add NEWS for 1.4.2 commit d4b97b5a7ff4b9a9cb73ba0d1dbaf3b91e75f8f8 Author: Shawn Betts Date: Sat Oct 6 21:12:58 2007 -0700 Remove .cvsignore files. add .gitignore files 2007-08-14 Bernhard R. Link * src/main.c (xvsprintf): limit memory allocation to 200K when vsnprintf return -1. (i.e. on pre-1999 systems not distinguising fatal errors and too small buffer). 2007-07-08 Bernhard R. Link * src/manage.c (get_res_name, get_res_class): remove (update_window_name): call get_class_hints directly to avoid it being called two times. 2007-07-07 Bernhard R. Link * src/manage.c (get_wmname): always try XmbTextPropertyToTextList first to also support UTF-8 window titles when encoded as XA_STRING 2007-07-04 Bernhard R. Link * src/main.c (clean_up): call free_user_commands, free_groups only after free_window_stuff * src/window.c (free_window_stuff): remove windows from group lists * src/action.h (free_user_commands): new prototype * src/action.c (set_var_free,user_command_free,free_user_commands): new functions 2007-05-19 Bernhard R. Link * src/manage.c (get_wmname): free buffer to close memory hole 2007-05-17 Bernhard R. Link * src/actions.c (cmd_windows): free buffer to close memory hole 2007-05-07 Shawn Betts * src/main.c (init_defaults): only load the backup font when the default font fails. 2007-05-04 Shawn Betts * src/main.c (init_defaults): if the default font fails, use the backup font. * src/conf.h (BACKUP_FONT): new define 2007-04-23 Shawn Betts * src/input.c (update_modifier_map): don't map both super and hyper to the same modifier slot. 2007-03-08 Shawn Betts * src/split.c (set_active_frame): call switch_frame hook (show_frame_indicator): only show frame indicator (set_active_frame): new arg force_indicator. all callers updated. (show_frame_indicator): new arg force. all callers updated. * src/main.c (init_defaults): init bar_in_padding * src/globals.c (rp_switch_screen_hook): new hook * src/data.h (struct rp_defaults): new slot, bar_in_padding * src/bar.c (bar_x): honour bar_in_padding setting (bar_y): likewise * src/actions.c (init_set_vars): add barinpadding (set_barinpadding): new function * src/globals.h: new global rp_switch_screen_hook 2007-01-31 Bernhard R. Link * src/frame.c (frame_read): fix bug to never set dedicated 2006-12-19 Shawn Betts * Release 1.4.1 2006-12-19 Shawn Betts * src/manage.c (force_maximize): remove call to usleep 2006-12-13 Andreas Seltenreich * src/bar.c (show_bar, prepare_bar): Switch to default colormap. (hide_bar): Possibly restore colormap. * src/input.c (get_more_input): Temporarily install default colormap. * src/actions.c (cmd_help, cmd_license): Likewise. * src/events.c (colormap_notify): Postpone installing colormap when bar is raised. 2006-11-23 Shawn Betts * src/events.c (execute_remote_command): return a cmdred instead of NULL when RP_COMMAND isn't present. * src/actions.h (cmdred_new): new prototype * src/actions.c (cmdret_new): no longer static function 2006-11-23 Bernhard R. Link * doc/ratpoison.texi (set winfmt): document number between % and format. * doc/ratpoison.1 (set winfmt): complete format char description, document number between % and format. 2006-11-21 Bernhard R. Link * add MAINTAINERCLEANFILES variables to sub Makefile.ams * add depcomp to top-level Makefile.am's MAINTAINERCLEANFILES * add fdl.texi to doc/Makefile.am's EXTRA_DIST 2006-11-18 Shawn Betts * src/split.c (show_frame_message): handle the case when the frame is empty. 2006-11-17 Shawn Betts * src/bar.c (bar_y): take into account screen padding (bar_x): likewise * src/split.c (show_frame_indicator): use defaults.frame_fmt (show_frame_message): format frame_fmt string with format_string * src/messages.h (MESSAGE_FRAME_STRING): removed * src/main.c (init_defaults): init defaults.frame_fmt * src/data.h (struct rp_defaults): add frame_fmt * src/actions.c (set_framefmt): new function (init_set_vars): new set var "framefmt" 2006-10-03 Shawn Betts * src/events.c (handle_key): demote the 'no matching key' error to debug output. * src/main.c (strtok_ws): remove useless debug ouput. 2006-09-26 Shawn Betts * src/actions.c (initialize_default_keybindings): bind "swap" to C-t x and C-t C-x 2006-09-26 Bernhard R. Link * src/actions.c (cmd_execa,cmd_execf): new functions (spawn): new argument to set frame for client_info (cmd_exec): give spawn current_frame() (cmd_verbexec): give spawn current_frame() (cmd_tmpwm): give spawn NULL (init_user_commands): add execa and execf commands * src/actions.h (spawn): new argument added to prototype (cmd_execa,cmd_execf): new prototypes 2006-09-26 Bernhard R. Link * src/split.c, src/split.h: new function exchange_with_frame * src/actions.c, src/actions.h: add cmd_exchange_left,cmd_exchange_right,cmd_exchange_up,cmd_exchange_down, add new keybindings C-Left,C-Right,C-Up,C-Down to those. * doc/ratpoison.1: document the new functions and keybindings. 2006-09-26 Shawn Betts * src/frame.c (read_slot): use strtok_ws (frame_read): likewise * src/actions.c (command): dont use strtok. manually pull out the command and the rest. * src/main.c (strtok_ws): new function * src/manage.c (update_window_name): return 1 if anything changed. 0 otherwise. * src/events.c (property_notify): only update the window names if the window name actually changed. * src/bar.h (redraw_last_message): new prototype * src/bar.c (update_bar): update the window list if that's what's displayed. call redraw_last_message. (update_window_names): call marked_message_internal. (marked_message): call marked_message_internal. (marked_message_internal): ripped body from old marked_message minus alarm reset. (redraw_last_message): new function (show_last_message): call redraw_last_message * src/actions.c: include ctype.h (cmd_license): use redraw_last_message (cmd_help): likewise 2006-08-27 Shawn Betts * src/actions.c (parse_args): gobble spaces at the beginning of the string. (parse_args): use isspace to test for spaces 2006-08-23 Shawn Betts * src/bar.c (prepare_bar): cap the width and height to the size of the screen. 2006-05-23 Shawn Betts * src/actions.c (spawn): pass cmd twice to execcl * src/events.c (handle_signals): pass NULL to execlp * src/actions.c (spawn): pass NULL to execcl * src/xinerama.c (free_xinerama): take void arguments. prototype updated. (init_xinerama): likewise * src/window.c (init_window_stuff): take void arguments. prototype updated. (free_window_stuff): likewise * src/split.c (remove_all_splits): take void arguments. prototype updated. (current_frame): likewise (init_frame_lists): likewise (find_last_frame): likewise (current_window): likewise (remove_all_splits): likewise (hide_frame_indicator): likewise (show_frame_indicator): likewise * src/main.c (check_child_procs): take void arguments. prototype updated. (clean_up): likewise * src/number.c (numset_new): take void arguments. prototype updated. * src/manage.c (clear_unmanaged_list): take void arguments. prototype updated. (list_unmanaged_windows): likewise (ungrab_keys_all_wins): likewise (grab_keys_all_wins): likewise (current_screen): likewise (unhide_all_windows): likewise * src/main.c (sighandler): static function (hup_handler): likewise (alrm_handler): likewise (handler): likewise (print_version): likewise (print_help): likewise (show_welcome_message): take void arguments (init_defaults): likewise * src/input.c (ring_bell): take void arguments. prototype updated (update_modifier_map): likewise * src/history.c (get_history_filename): take void arguments (history_load): take void arguments. prototype updated (history_save): likewise (history_reset): likewise (history_previous): likewise (history_next): likewise (history_list_items): likewise * src/group.c (group_in_list): static function (init_groups): take void arguments. prototype updated (free_groups): likewise (group_next_group): likewise (group_prev_group): likewise * src/globals.c (x_export_selection): take void arguments (get_cut_buffer): likewise (get_primary_selection): likewise (get_selection): take void arguments. protype updated. (init_globals): likewise * src/events.c (selection_clear): take void arguments (handle_signals): likewise (listen_for_events): take void argumens. prototype updated * src/bar.c (reset_alarm): take void arguments (show_last_message): take void arguments. prototype updated. (free_bar): likewise * src/actions.c (init_set_vars): static function. take void arguments (clear_frame_redos): take void arguments (pop_frame_undo): likewise (pop_frame_redo): likewise (keymap_new): static function (parse_keydesc): likewise (trivial_completions): likewise (keymap_completions): likewise (window_completions): likewise (group_completions): likewise (colon_completions): likewise (exec_completions): likewise (hook_completions): likewise (var_completions): likewise (update_all_gcs): take void arguments (grab_rat): likewise (ungrab_rat): likewise (init_user_commands): take void arguments. prototype updated. (free_keymaps): likewise (free_aliases): likewise 2006-05-21 Shawn Betts * src/conf.h (DEFAULT_FONT): changed * src/actions.c (command): return a cmdret structure if cmd is NULL 2006-05-15 Shawn Betts * src/manage.c (grab_top_level_keys): use defaults.top_kmap for the top kmap * src/main.c (init_defaults): init defaults.top_kmap * src/events.c (handle_key): use defaults.top_kmap for the top kmap * src/data.h (struct rp_defaults): new field, top_kmap * src/actions.c (set_topkmap): new prototype (init_set_vars): topkmap new set variable (initialize_default_keybindings): use defaults.top_kmap for the top kmap (cmd_undefinekey): likewise (cmd_definekey): likewise (cmd_escape): likewise (cmd_delkmap): likewise (set_topkmap): new function 2006-05-14 Shawn Betts * src/input.c (update_modifier_map): use XGetKeyboardMapping. 2006-05-08 Shawn Betts * contrib/rpws (ws_init): loop from 1 not 0 2006-04-29 Shawn Betts * src/bar.c (marked_message): print NULL if msg is null in debug output * src/actions.c (cmd_getenv): return an empty string for nonexistant env vars. (command): print NULL if rest is null in debug output 2006-04-21 Shawn Betts * src/main.c (print_version): print build date 2006-04-20 Shawn Betts * src/actions.h: new command sfrestore * src/actions.c (init_user_commands): new command sfrestore (cmd_sfrestore): new function 2006-04-19 Shawn Betts * src/events.c (property_notify): Only map the first window in the launch frame. * src/split.c (show_frame_message): use XmbDrawString and XmbTextEscapement * src/screen.c (init_screen): don't include the font in the gc * src/ratpoison.h: include Xlocale.h * src/manage.c (get_wmname): support i18n characters * src/main.c (init_defaults): call load_query_font_set and set_extents_of_fontset (main): call setlocale (clean_up): call XFreeFontSet (set_extents_of_fontset): new function (load_query_font_set): likewise * src/input.c (update_input_window): use XmbTextEscapement and XmbDrawString * src/globals.h (FONT_HEIGHT): use rp_font_ascent and rp_font_descent (MAX_FONT_WIDTH): use rp_font_width new globals rp_font_ascent, rp_font_descent, rp_font_width * src/globals.c: new globals rp_font_ascent, rp_font_descent, rp_font_width * src/data.h (struct rp_defaults): font is a XFontSet * src/bar.c (max_line_length): call XmbTextEscapement (draw_string): call XmbDrawString (get_mark_box): call XmbTextEscapement * src/actions.c (read_frame): call XmbTextEscapement (cmd_license): likewise (read_frame): call XmbDrawString (cmd_license): likewise (cmd_help): likewise (update_gc): don't include the font (set_font): call load_query_font_set 2006-04-18 Shawn Betts * src/hook.c (hook_run): echo the result of each command. free the result. 2006-04-03 Shawn Betts * src/messages.h (MESSAGE_MAP_TRANSIENT_GROUP): new define (MESSAGE_MAP_WINDOW_GROUP): likewise * src/manage.c (map_window): call show_rudeness_msg * src/events.h (show_rudeness_msg): new prototype * src/events.c (show_rudeness_msg): renamed from show_rudeness_raise_msg. handle the MAP messages as well. all callers updated. 2006-04-02 Shawn Betts * 1.4.0 release 2006-04-02 Shawn Betts * contrib/Makefile.am (pkgdata_DATA): add sloppy.c (EXTRA_DIST): likewise * src/events.c (handle_key): call XAllowEvents 2006-04-01 Shawn Betts * src/input.c (grab_key): grab the keyboard synchronously 2006-03-16 Ryan Yeske * doc/ratpoison.texi (Groups): Fix description of gnew command. 2006-03-15 Bernhard R. Link * src/screen.c (screen_update): new function (init_screen): listen for screen resizes * src/screen.h: new prototype * src/events.c (configure_notify): new function (delegate_event): call configure_notify for ConfigureNotify events * src/frame.c (frame_dump): remember the size of the screen the frame coordinates are relative to. (frame_restore): adopt coordinates to possible screen resizes. * src/frame.h (frame_fump): take a screen argument (frame_read): likewise * src/actions.c (cmd_tmpwm): listen for screen resizes again (fdump, frestore, cmd_fdump): supply screen to frame_dump, frameread 2006-03-15 Shawn Betts * src/main.c (clean_up): use list_size not rp_num_frame_undos * src/globals.c: remove global var rp_num_frame_undos. All callers updated. * src/actions.c (push_frame_undo): use list_size, not rp_num_frame_undos (set_maxundos): likewise * src/window.c (_XOPEN_SOURCE): new define * src/screen.c (is_a_root_window): w is unsigned int (init_screen): typecast _net_wm_pid as unsigned char*. * src/main.c (read_rc_file): linesize is size_t * src/frame.c (frame_read): use a temp var when reading the :dedicated value. * src/bar.c (max_line_length): i and start are size_t (draw_string): i is size_t (get_mark_box): mark_start and mark_end are size_t * src/actions.c (find_keybinding): state is unsigned int (remove_keybinding): likewise (frame_selector): n is unsigned int (frame_selector_match): i is size_t. typecast comparison as size_t. * src/bar.c (show_bar): accept a fmt argument. all callers and prototype updated. (update_bar): just display the last message if bar isn't hidden. (update_window_names): accept a fmt argument. all callers and prototype updated. * src/actions.c (init_user_commands): add optional argument to "info" (cmd_info): handle optional argument (cmd_windows): when called interactively use the argument as the format string. 2006-03-14 Antti Nykдnen * src/format.c: new file * src/format.h: new file * Makefile.am (ratpoison_SOURCES): add format.c and format.h * src/actions.c (set_infofmt): new function (wingravity_to_string): char * instead of static char * because needed in format.c (cmd_info): use format_string * src/actions.h (wingravity_to_string): add prototype * src/data.h (info_fmt): new variable * src/main.c (init_defaults): set a value for defaults.info_fmt * src/ratpoison.h: include format.h * src/windows.c (get_window_list): use format_string (isdigit): remove function as the formatting is now done in format.c (concat_width): likewise (format_window_name): likewise 2006-03-14 Shawn Betts * src/manage.c (ungrab_top_level_keys): unconditionally ungrab every key. * src/events.c (mapping_notify): call ungrab_keys_all_wins and grab_keys_all_wins. 2006-04-10 Bernhard R. Link * src/manage.c (maximize_transient,maximize_normal): avoid divide by zero when resize increment is 0. 2006-03-07 Shawn Betts * src/main.c (clean_up): properly free rp_frame_numset * src/editor.c (editor_enter): free line->buffer before setting it to the history expansion. * src/completions.c (completions_free): free the rp_completions struct too * src/actions.c (del_frame_undo): free the rp_frame_undo struct too. 2006-02-26 Shawn Betts * src/editor.c (editor_insert): use memmove to make room for inserted string. * src/window.c (add_to_window_list): only change the window's group and frame if window_mapped is 0. * src/data.h (struct rp_child_info): new field window_mapped * src/actions.c (spawn): init window_mapped field in child_info. 2006-01-18 Bernhard R. Link * src/events.c: look for _NET_WM_PID notify events and adopt the intended frame number accordingly. * src/window.c, src/window.h: make get_child_info accessible from events.c 2006-01-04 Shawn Betts * src/conf.h (ASPECT_WINDOWS_ARE_TRANSIENTS): new define * src/manage.c (window_is_transient): new function (maximize_normal): honour aspect ratio hint * src/window.c (update_window_gravity): use maxsize_gravity for windows with aspect hints. (set_active_window_body): call window_is_transient * src/split.c (cleanup_frame): call window_is_transient 2006-01-03 Shawn Betts * src/number.c (numset_add_num): store the ret val of numset_find_empty_cell in a variable and use it as an index into the numbers_taken array. * src/actions.c (cmd_curframe): return the frame number in non-interactive mode. * src/split.c (cleanup_frame): in the maxsize windows are transients check either the width or height must be less than the screen width/height (just like in windows.c). 2005-12-11 Shawn Betts * src/manage.c (withdraw_window): call rp_delete_window_hook hook * src/globals.c: new hook rp_delete_window_hook 2005-11-05 Shawn Betts * src/events.c (handle_signals): xsync after hiding all windows * src/manage.h (unhide_all_windows): new prototype * src/manage.c (unhide_all_windows): new function. * src/events.c (handle_signals): unhide windows before switching to a new wm 2005-10-22 Shawn Betts * src/window.c (get_mouse_position): renamed from get_mouse_root_position. get pos relative to window. 2005-10-20 Shawn Betts * src/window.c: include unistd.h (get_child_info): new function (add_to_window_list): get the window's client's pid if possible and assign the window the appropriate group and frame. (add_to_window_list): init intended_frame_number (save_mouse_position): save the position relative to the window (give_window_focus): restore the position relative to the window (set_active_window_body): put the window in the frame contained in intended_frame_number when appropriate. * src/screen.c (screen_find_frame_by_frame): new function (init_screen): add the net_supported atom to the root window. * src/main.c (main): init netwm atoms * src/group.c (groups_find_group_by_group): new function * src/globals.c (_net_wm_pid, _net_supported): new globals * src/data.h (struct rp_window): new field intended_frame_number. (struct rp_child_info): new fields group, frame, screen. * src/actions.c (spawn): call the command directly when new argument, raw, is non zero. all callers updated. (spawn): fill in the frame, group and screen for the child. 2005-10-14 Shawn Betts * src/actions.c (cmd_describekey): print the key name even when it's bound. 2005-08-23 Shawn Betts * src/actions.c (cmd_addhook): remove erroneous call to free. * contrib/Makefile.am (pkgdata_DATA): add unrat.c (EXTRA_DIST): likewise 2005-06-13 Shawn Betts * src/editor.c (edit_bindings): add C-h and C-m 2005-06-11 Shawn Betts * src/main.c (clean_up): call del_frame_undo not pop_frame_undo * src/globals.h: new global prototype rp_frame_redos * src/globals.c: new global rp_frame_redos * src/actions.h: new command 'undo' (del_frame_undo): new prototype (pop_frame_undo): delete prototype * src/actions.c (init_user_commands): new command 'undo' (clear_frame_redos): new function (del_frame_undo): likewise (push_frame_undo): call del_frame_undo instead of pop_frame_undo. call clear_frame_redos. (pop_frame_list): new function (pop_frame_undo): returns the popped frame. all callers updated. (pop_frame_redo): new function (initialize_default_keybindings): bind undo to u and C-u, bind redo to U. (set_maxundos): call del_frame_undo instead of pop_frame_redo (cmd_redo): new function 2005-06-11 Shawn Betts * src/actions.h: remove the non-existant command, last. * src/window.c (isdigit): new function (format_window_name): read a length argument and crop window names to that length. (get_window_list): length argument applies to %c and %a. * src/actions.c (cmd_tmpwm): stop waiting for the child if waitpid produced an error. 2005-04-17 Shawn * src/actions.h: new prototype compat * src/actions.c (initialize_default_keybindings): move def* aliases to cmd_compat (cmd_compat): new function * src/messages.h (MESSAGE_RAISE_TRANSIENT_GROUP): new define (MESSAGE_RAISE_WINDOW_GROUP): likewise * src/group.h (groups_find_group_by_window): new prototype * src/group.c (groups_find_group_by_window): new function. * src/events.c (show_rudeness_raise_msg): new function (map_request): call show_rudeness_raise_msg (configure_request): likewise 2005-04-12 Shawn * contrib/rpws: Replace with Mike O'Connor's perl version. 2005-04-10 Shawn * src/actions.c (cmdret_new): malloc enough for the cmdret structure. 2005-04-09 Shawn * src/actions.c (init_user_commands): add KEY argument to meta command. (cmd_meta): optionally use the KEY passed in as an argument. (cmd_set): pass the string produced when no args are passid in to cmdret_new using "%s". (cmd_windows): return the string using "%s" in call to cmdret_new. (cmd_help): likewise. (cmd_gravity): likewise (cmd_getenv): likewise (cmd_fdump): likewise (cmd_groups): likewise (cmd_listhook): likewise (cmd_sfdump): likewise (cmd_sdump): likewise (cmd_describekey): likewise (cmd_prompt): likewise (cmd_getsel): likewise (cmd_unmanage): likewise (cmd_prev): likewise (cmd_prev_frame): likewise (cmd_next): likewise (cmd_next_frame): likewise (cmd_other): likewise (cmd_version): likewise (cmd_time): likewise (cmd_cnext): likewise (cmd_cprev): likewise (cmd_inext): likewise (cmd_iprev): likewise (cmd_cother): likewise (cmd_iother): likewise 2005-03-05 * src/ratpoison.h (check_child_procs): new prototype (chld_handler): likewise (set_sig_handler): likewise * src/main.c (check_child_procs): new function (chld_handler): call check_child_procs (free_screen): unselect all events on the root window. * src/actions.c: include signal.h (spawn): don't prefix the command with exec. (set_wingravity): print the setting as a string. (set_transgravity): likewise (set_maxsizegravity): likewise (set_bargravity): likewise (set_font): likewise (set_winfmt): likewise (set_fgcolor): likewise (set_bgcolor): likewise (set_framesels): likewise (cmd_tmpwm): ungrab the keys for all windows before spawning the new wm. (cmd_tmpwm): disable the sigchld handler then enabled it after the wm returns. call check_child_procs. 2005-02-26 * src/actions.c (parse_args): properly check if we've hit the arg limit. 2005-02-22 sabetts * src/main.c (read_startup_files): use xsprintf when generating path to ratpoisonrc. * src/input.c (get_more_input): Use HAVE_HISTORY to ifdef out history_reset. * src/actions.c (command): new variable, raw, which records whether to tell parse_args not to parse the last arg. (cmd_set): likewise 2005-02-10 Shawn Betts * src/actions.c (parse_keydesc): return a cmdret error in the event of an error and take a point to an rp_key as an argument. Fill this argument with the parsed key. (parse_keydesc): Don't accept the keysym if it doesn't map to a keycode. (cmdret_new): renamed from cmdret_new_printf. All callers updated. (cmdret_new_printf): remove function. (arg_free): free the key member. 2005-02-09 Shawn Betts * src/main.c (main): set the RATPOISON env. variable to the path to this executable. 2005-02-06 Shawn Betts * src/actions.c (cmd_prompt): allow prompt to be run interactively. 2005-02-04 Shawn Betts * configure.in: bump version to 1.4.0-CVS. 2005-02-04 Shawn Betts * src/actions.c (set_winname): return the cmdret created. (cmd_unalias): likewise (cmd_nextscreen): likewise (cmd_prevscreen): likewise (cmd_gdelete): likewise 2005-01-30 Shawn Betts * src/actions.c (cmd_escape): when the escape key doesn't have a modifier give the meta key a modifier. (cmd_undefinekey): call XSync after ungrabbing and grabbing all keys. 2005-01-22 Shawn Betts * src/actions.h (argtype): add arg_RAW * src/actions.c (init_user_commands): make unmanage'd argument optional when called non-interactively. (init_user_commands): "title" accepts 1 argument. (init_user_commands): "echo" and "putsel" take a raw argument. (read_arg): parse arg_RAW (parse_args): take a raw argument. gobble whitespace when we've hit nargs and raw is false. callers updated. (command): don't gobble whitespace after reading the command. set nargs when the argtype is arg_RAW, too. (cmd_set): set nargs when the argtype is arg_RAW, too. 2005-01-20 Shawn Betts * src/actions.c (init_user_commands): fix unmanage command. 2005-01-19 Shawn Betts * contrib/genrpbindings: add python bindings. 2005-01-17 Shawn Betts * src/frame.c (frame_read): remove space in "(frame " string. 2005-01-15 Shawn Betts * src/actions.c (spawn): Prepend cmd with exec. 2004-01-15 Bernhard R. Link * actions.c (cmd_focusleft,cmd_focusright,cmd_focusup,cmd_focusdown): show currectframe if movement not possible. 2005-01-15 Shawn Betts * src/frame.c (frame_read): correctly determine if the input starts with "(frame ". 2005-01-15 Shawn Betts * src/actions.c (cmd_prev): return a cmdret*. same for error messages. (cmd_select): likewise. (command): use cmdret* to report when alias recursion has hit the limit. (cmd_resize): return a cmdret when num frames is < 2. (set_padding): return a cmdret*, not NULL. (cmd_nextscreen): likewise (cmd_prevscreen): likewise (cmd_addhook): likewise * src/main.c (main): Report extra unparsed arguments. * src/actions.c (init_user_commands): set the last argument of the following commands to arg_REST: addhook, chdir, remhook, source, tmpwm, and prompt. (command): check list_size of head when checking for too many arguments. (cmd_set): raise error if set command was passed too many arguments. 2005-01-15 Shawn Betts * src/actions.c (init_user_commands): change select's argument to arg_REST. * configure.in: add AM_MAINTAINER_MODE * src/globals.h (rp_exec_newwm): new extern. * src/globals.c (rp_exec_newwm): new global. * src/actions.c (cmd_newwm): set rp_exec_newwm to the new wm. * src/events.c (listen_for_events): call XSync after delegate_event. (handle_signals): exec newwm if its not NULL. Report X11 errors (moved from listen_for_events). 2005-01-15 Ryan Yeske * src/editor.c (saved_command): Only define whe HAVE_HISTORY is defined. 2005-01-15 Shawn Betts * src/actions.c (command): treat arg_SHELLCMD like arg_REST. (cmd_set): likewise * src/globals.h (RET_SUCCESS): set to 1 (RET_FAILURE): set to 0 * src/communications.c (receive_command_result) (receive_command_result): fix error deciding when to print to stderr. 2005-01-15 Shawn Betts * src/actions.c (parse_args): remove erroneous pointer dereference of i when gobbling whitespace. (init_user_commands): set second argument to "alias" command to arg_REST. (init_user_commands): likewise for "set" (cmd_readkey): remove useless PRINT_DEBUG (cmd_set): pass an empty string to parse_args when the args[1] is NULL. (cmd_set): call the set function if the arg list size is 0. 2005-01-14 Shawn Betts * src/main.c (init_defaults): turn off warp by default. 2005-01-14 Shawn Betts * src/actions.c (ARG_STRING): new define (ARG): likewise (set_vars): change to a list_head. (add_set_var): new function (init_set_vars): likewise (user_commands): change to a list_head. Move command definitions to init_user_commands. (add_command): new function (init_user_commands): likewise (cmdret_new): likewise (cmdret_new_printf): likewise (cmdret_free): likewise (read_string): likewise (read_keymap): likewise (read_keydesc): likewise (read_command): likewise (read_shellcmd): likewise (read_frame): likewise (read_window): likewise (read_gravity): likewise (read_group): likewise (read_hook): likewise (read_variable): likewise (hook_completions): likewise (read_number): likewise (read_arg): likewise (parsed_input_to_args): likewise (fill_in_missing_args): likewise (parse_args): likewise (arg_array): likewise (arg_free): likewise (command): use parse_args, parsed_input_to_args, fill_in_missing_args to parse arguments and pass to command functions. (command): return cmdret* structure. prototype updated. (cmd_abort): second arg is an array of struct cmdarg*. Return cmdret*. Updated to use new parsed arguments. (cmd_addhook): likewise (cmd_alias): likewise (cmd_banish): likewise (cmd_bind): likewise (cmd_chdir): likewise (cmd_clrunmanaged): likewise (cmd_colon): likewise (cmd_curframe): likewise (cmd_delete): likewise (cmd_echo): likewise (cmd_escape): likewise (cmd_exec): likewise (cmd_fdump): likewise (cmd_focusdown): likewise (cmd_focuslast): likewise (cmd_focusleft): likewise (cmd_focusright): likewise (cmd_focusup): likewise (cmd_frestore): likewise (cmd_fselect): likewise (cmd_gdelete): likewise (cmd_getenv): likewise (cmd_gmerge): likewise (cmd_gmove): likewise (cmd_gnew): likewise (cmd_gnewbg): likewise (cmd_gnext): likewise (cmd_gprev): likewise (cmd_gravity): likewise (cmd_groups): likewise (cmd_gselect): likewise (cmd_h_split): likewise (cmd_help): likewise (cmd_info): likewise (cmd_kill): likewise (cmd_last): likewise (cmd_lastmsg): likewise (cmd_license): likewise (cmd_link): likewise (cmd_listhook): likewise (cmd_meta): likewise (cmd_msgwait): likewise (cmd_newwm): likewise (cmd_next): likewise (cmd_next_frame): likewise (cmd_nextscreen): likewise (cmd_number): likewise (cmd_only): likewise (cmd_other): likewise (cmd_prev): likewise (cmd_prev_frame): likewise (cmd_prevscreen): likewise (cmd_quit): likewise (cmd_redisplay): likewise (cmd_remhook): likewise (cmd_remove): likewise (cmd_rename): likewise (cmd_resize): likewise (cmd_restart): likewise (cmd_rudeness): likewise (cmd_select): likewise (cmd_setenv): likewise (cmd_shrink): likewise (cmd_source): likewise (cmd_startup_message): likewise (cmd_time): likewise (cmd_tmpwm): likewise (cmd_unalias): likewise (cmd_unbind): likewise (cmd_unimplemented): likewise (cmd_unmanage): likewise (cmd_unsetenv): likewise (cmd_v_split): likewise (cmd_verbexec): likewise (cmd_version): likewise (cmd_warp): likewise (cmd_windows): likewise (cmd_readkey): likewise (cmd_newkmap): likewise (cmd_delkmap): likewise (cmd_definekey): likewise (cmd_undefinekey): likewise (cmd_set): likewise (cmd_sselect): likewise (cmd_ratwarp): likewise (cmd_ratclick): likewise (cmd_ratrelwarp): likewise (cmd_rathold): likewise (cmd_cnext): likewise (cmd_cother): likewise (cmd_cprev): likewise (cmd_dedicate): likewise (cmd_describekey): likewise (cmd_inext): likewise (cmd_iother): likewise (cmd_iprev): likewise (cmd_prompt): likewise (cmd_sdump): likewise (cmd_sfdump): likewise (cmd_undo): likewise (cmd_putsel): likewise (cmd_getsel): likewise (set_resizeunit): arg is an array of struct cmdarg*. Return cmdret*. Updated to use new parsed arguments. (set_wingravity): likewise (set_transgravity): likewise (set_maxsizegravity): likewise (set_bargravity): likewise (set_font): likewise (set_padding): likewise (set_border): likewise (set_barborder): likewise (set_inputwidth): likewise (set_waitcursor): likewise (set_winfmt): likewise (set_winname): likewise (set_fgcolor): likewise (set_bgcolor): likewise (set_barpadding): likewise (set_winliststyle): likewise (set_framesels): likewise (set_maxundos): likewise * src/actions.h: include ratpoison.h (argtype): add arg_FRAME, arg_WINDOW, arg_COMMAND, arg_SHELLCMD, arg_KEYMAP, arg_KEY, arg_GRAVITY, arg_GROUP, arg_HOOK, arg_VARIABLE. (union arg_union): new union (struct cmdarg): new struct (struct argspec): likewise (struct cmdret): likewise (user_command): change func to reflect new command function args. add num_args, ni_required_args, i_required_args. (RP_CMD): new macro for prototyping command functions. all command function prototypes updated to use this macro. (init_user_commands): new prototype (cmdret_free): likewise * src/main.c (read_rc_file): handle cmdret* returned by command. (main): call init_user_commands * src/linkedlist.h (list_size): new prototype * src/linkedlist.c (list_size): new function * src/globals.h (RET_SUCCESS): new define (RET_FAILURE): new define * src/events.c (handle_key): handle the cmdret structure returned by command. (execute_remote_command): return cmdret*. (receive_command): mark the command return string as error or output before sending. * src/data.h (struct rp_action): change data element type to char* * src/communications.c (receive_command_result): print command output to stderr if marked as an error. 2005-01-04 Ryan Yeske * src/actions.c (cmd_rudeness): Print rudeness to bar when called interactively. 2005-01-03 Ryan Yeske * src/main.c (print_help): Update mailing list. * src/actions.c (cmd_license): Update mailing list and website. 2005-01-14 Shawn Betts * contrib/genrpbindings: fix regex to match new actions.c format. 2004-12-12 Shawn Betts * src/sbuf.c (sbuf_concat): call sbuf_nconcat. move bulk of body to sbuf_nconcat. (sbuf_nconcat): new function * src/globals.c (init_globals): new function * src/main.c (main): call init_globals. * src/globals.c: include unistd.h. (x_export_selection): new function (set_nselection): likewise (set_selection): call x_export_selection (get_cut_buffer): new function (get_primary_selection): likewise (get_selection): likewise * src/editor.c (editor_kill_word): add the deleted text to the X11 selection (editor_backward_kill_word): likewise (editor_kill_line): likewise (backward_kill_line): new fuction (editor_backward_kill_line): add the deleted text to the X11 selection. call backward_kill_line. (paste_cut_buffer): remove function (paste_primary_selection): likewise (editor_paste_selection): call get_selection to get the X11 selection. (editor_complete): call backward_kill_line instead of editor_backward_kill_line. * src/ratpoison.h: Include string.h. Include X11/XAtom.h. * src/globals.c (selection): new global (set_selection): new function * src/events.c: include X11/Xmd.h (selection_request): new function (selection_clear): new function (delegate_event): call selection_request and selection_clear for SelectionRequest and SelectionClear events. * src/actions.c (user_commands): remove duplicate focusprev entry. Add putsel. Add getsel. (cmd_putsel): new function (cmd_getsel): new function * contrib/genrpbindings: add a missing paren to the elisp bindings. 2004-12-12 Ryan Yeske * MERCHANDISE: Add file. 2004-12-09 Shawn Betts * src/actions.c (cmd_unmanage): fix message formatting (cmd_ratwarp): likewise (cmd_ratrelwarp): likewise (cmd_ratclick): likewise (cmd_rathold): likewise (cmd_unsetenv): likewise (set_barpadding): likewise (cmd_fselect): likewise (cmd_addhook): likewise (cmd_remhook): likewise (cmd_listhook): likewise (cmd_gdelete): likewise (cmd_readkey): likewise (cmd_newkmap): likewise (cmd_delkmap): likewise (cmd_describekey): likewise * src/messages.h (MESSAGE_NO_OTHER_WINDOW): remove padding spaces (MESSAGE_NO_OTHER_FRAME): likewise (MESSAGE_NO_MANAGED_WINDOWS): likewise (MESSAGE_UNKNOWN_COMMAND): likewise (MESSAGE_WINDOW_INFORMATION): likewise (MESSAGE_RAISE_TRANSIENT): likewise (MESSAGE_RAISE_WINDOW): likewise (MESSAGE_MAP_TRANSIENT): likewise (MESSAGE_MAP_WINDOW): likewise (MESSAGE_WELCOME): likewise (MESSAGE_FRAME_STRING): likewise * src/main.c (init_defaults): set bar_x_padding to 4 * src/events.c (handle_signals): Remove padding space on all calls to message and marked_message_printf. * src/editor.c (editor_enter): Remove padding space on all calls to message and marked_message_printf. * src/actions.c: Remove padding space on all calls to message and marked_message_printf. * src/bar.c (get_mark_box): make the mark extend to the edge of the box regardless of the bar padding. 2004-12-08 Shawn Betts * src/events.c (destroy_window): make sure the current screen is the windows screen before calling set_active_frame. (unmap_notify): likewise * src/actions.c (frestore): use strtok_r. 2004-12-06 Shawn Betts * src/manage.c (unmanage): remove call to numset_release. 2004-12-04 Shawn Betts * src/frame.c (frame_dump): use a hyphen instead of underscore for f->last_access. 2004-11-22 Shawn Betts * src/actions.c (cmd_verbexec): rewritten to fix crash bug. 2004-11-20 Shawn Betts * src/actions.c (cmd_rathold): change argument order. echo parse errors. 2004-11-19 Shawn Betts * src/actions.c (cmd_sfdump): properly declare i at the top of the function. * src/frame.c (frame_dump): dump the frame as an sexpr instead of a list of numbers. (frame_read): read the new frame dump format (init_frame): new static function (frame_new): call init_frame (frame_read): likewise * src/actions.c (cmd_describekey): fix error messages. 2004-11-18 Shawn Betts * src/actions.c (set_vars): add maxundos (push_frame_undo): new function (pop_frame_undo): likewise (initialize_default_keybindings): add binding for "undo" (initialize_default_keybindings): add def alias for maxundos (cmd_other): call set_active_window_force instead of set_active_window (cmd_v_split): push the frame set (cmd_h_split): likewise (cmd_only): likewise (cmd_remove): likewise (cmd_shrink): likewise (cmd_tmpwm): likewise (cmd_license): update copyright. Add build date and time. (cmd_fselect): simplify code that returns the frame selected. (fdump): new function (cmd_fdump): call fdump to dump the screen's frame set. (frestore): new function (cmd_frestore): call frestore to restore the screen's frame set. (cmd_sfdump): new function (cmd_sdump): likewise (set_maxundos): likewise (cmd_cnext): likewise (cmd_cprev): likewise (cmd_inext): likewise (cmd_iprev): likewise (cmd_cother): likewise (cmd_iother): likewise (cmd_undo): likewise (cmd_prompt): likewise (cmd_describekey): likewise (cmd_dedicate): likewise * src/main.c (init_defaults): init maxundos to 20 (clean_up): free the undo history lists * src/window.h (set_active_window_body): new function (set_active_window_force): likewise * src/window.c (set_active_window): new function (set_active_window_force): likewise (set_active_window_body): renamed from set_active_window (set_active_window_body): Add code to handle dedicated frames. * src/screen.h (screen_dump): new prototype * src/screen.c (screen_dump): new function * src/linkedlist.h (list_last): new macro * src/group.h (group_last_window_by_class_complement): new prototype (group_last_window_by_class): likewise * src/group.c (group_last_window_by_class): new function (group_last_window_by_class_complement): likewise * src/globals.h (rp_frame_undos): new extern. (rp_num_frame_undos): likewise * src/globals.c (rp_frame_undos): new list. (rp_num_frame_undos): new global * src/frame.c (frame_new): init f->dedicated to 0. * src/data.h (struct rp_frame): add dedicated member. (struct rp_defaults): add maxundos member. (struct rp_frame_undo): new struct. * src/actions.c: new commands, cnext, cother, cprev, * src/window.c (print_window_information): add argument, group. print the window's number in the group. All callers updated. * src/actions.c (cmd_info): print the window's number in the current group. * src/window.c (unhide_transient_for): add a newline to debugging output. (hide_transient_for_between): likewise. * src/manage.c (get_wmname): typecast name when passing to xstrdup. * src/main.c (main): typecast command[i] when passing to send_command. * src/events.c (execute_remote_command): typecast req[1] when passing to command. (receive_command): typecast result when passing to XChangeProperty. * src/editor.c (editor_history_previous): Add newline to debugging output. (editor_history_next): likewise. (paste_primary_selection): typecast data when passing to editor_insert. * src/communications.c (receive_command_result): typecast result when passing to strlen. (send_command): typecast cmd when passing the XChangeProperty. * src/actions.c (user_commands): add focusprev (cmd_prev): clean up (cmd_next): likewise (cmd_prev_frame): call find_frame_prev instead of find_frame_next. (cmd_frestore): grab the frame's number first when processing the frames. 2004-11-17 Shawn Betts * src/actions.c (user_commands): add rathold 2004-11-17 Shawn Betts * src/actions.c (cmd_rathold): new function 2004-11-17 Bernhard R. Link * src/actions.c: (initialize_default_keybindings): Added default keybindings for focusleft,fcousup,focusright,focusdown. (cmd_resize): Added support for multiple keybindings per action. Added arrow keys, escape and vi-like h,j,k,l to the keys used for resizing. * doc/ratpoison.1: Documented C-t arrow key * doc/ratpoison.texi: Documented C-t arrow key, fixed description of C-t f 2004-11-17 Shawn Betts * contrib/rpws: use env to find out where bash is 2004-11-11 Shawn Betts * contrib/genrpbindings: fix up path to ratpoison binary * src/actions.c (cmd_ratclick): new function (cmd_ratrelwarp): likewise (cmd_ratwarp): likewise (user_commands): new commands ratclick, ratrelwarp, ratwarp. * contrib/genrpbindings: add common lisp bindings 2004-11-03 Shawn Betts * src/input.c (get_more_input): call history_reset * src/history.c (history_load): remove call to using_history. (history_save): likewise (history_add): likewise 2004-11-02 Shawn Betts * src/split.c (blank_frame): use the frames screen, not the current screen. * src/group.c (group_last_window): add argument, the screen to find the window in. All callers updated. (group_prev_window): make sure the matched window is in the same screen as win. (group_next_window): likewise * src/window.c (find_window_other): add argument, the screen to find the window in. All callers updated. 2004-10-29 Shawn Betts * contrib/rpws: remove the echo /tmp/boom line. 2004-10-28 Shawn Betts * src/actions.c (set_padding): fix the padding order in xsprintf. 2002-02-05 Shawn Betts * src/actions.c (cmd_set): check if var is NULL before checking strlen(var) 2004-10-07 Shawn Betts * doc/ratpoison.texi (Frame Numbering): new topic 2004-07-24 Thien-Thi Nguyen * autogen.sh: Handle "-f" option. Add usage comment. 2004-10-05 Shawn Betts * src/actions.c (cmd_unsetenv): add an '=' to the string passed to putenv. (cmd_source): display an error message if no file is supplied. * src/main.c (print_version): update copyright date. * src/conf.h (DEFAULT_FONT): new define * src/main.c (init_defaults): use the DEFAULT_FONT define * src/actions.c: new command, sselect (cmd_sselect): new function. added prototype. (cmd_set): free 'var' at the appropriate places. (cmd_version): add the build date and time. (cmd_fselect): in interactive mode, return 'abort' when the user aborts, the frame number when they select one, or 'No such frame' when they selected a nonexistent one. (cmd_version): return the version string in non-interactive mode. (parse_wingravity): accept numbers for gravity. * src/events.c (property_notify): pass the root window to receive_command. (receive_command): take a root window as an argument and use it to listen for the command. 2004-10-04 Shawn Betts * src/screen.h (is_a_root_window): new prototype * src/screen.c (is_a_root_window): new function * src/events.c (property_notify): check for ratpoison commands on every root window, not just the default root window. * src/communications.c (send_command): store the root window in a variable, root. and use it whenever the root window is needed. 2004-09-29 Shawn Betts * configure.in: Warn when the history header or library is not found and compile without history support. * src/ratpoison.h: change ifdef to check for HAVE_HISTORY. * src/manage.c (get_state): change data to an unsigned char and cast data to a long* when it's used. * src/main.c (main): change ifdef to check for HAVE_HISTORY. (clean_up): likewise * src/history.c: change ifdef to check for HAVE_HISTORY. * src/events.c (receive_command): make prop_return an unsigned char. * src/editor.c (editor_history_previous): change ifdef to check for HAVE_HISTORY. (editor_history_next): likewise (editor_enter): likewise 2004-09-27 Shawn Betts * contrib/ratpoison.el (ratpoison-command): use call-process. 2004-06-13 Shawn Betts * src/main.c (init_defaults): set default for window list style to column. 2004-06-03 Shawn Betts * src/number.c (numset_add_num): add debugging output to print the args. (numset_release): likewise (numset_request): add debugging output to print the requested number * src/manage.c (withdraw_window): Print an error when withdrawing a window who's number is -1. * src/main.c (clean_up): free the global frame numset. (free_screen): don't free the screen's numset, since it's a pointer to the global numset. * src/group.c (group_del_window): don't release the window number here. It's already been done in group_unmap_window. * src/events.c (configure_request): only change the stack mode for non withdrawn windows. 2004-05-19 Shawn Betts * src/input.c (rp_mask_to_x11_mask): handle the shift modifier (x11_mask_to_rp_mask): likewise (keysym_to_keycode_mod): Make sure lower != keysym before adding the shift mask. (keysym_to_string): handle the shift modifier. use 's' for super instead of 'S' (cook_keycode): keep the shift modifier if XLookupString didn't gobble it. * src/data.h (RP_SHIFT_MASK): new define * src/actions.c (parse_keydesc): parse the shift modifier change super to 's' from 'S'. * src/window.c (format_window_name): add %f format option 2004-05-05 Shawn Betts * src/input.c (grab_key): use keysym_to_keycode_mod to get the keycode and modifier for the keysym. (keysym_to_keycode_mod): new function 2004-04-23 Shawn Betts * src/data.h (struct rp_defaults): new members, font_string, fgcolor_string, bgcolor_string. * src/actions.c (set_font): return defaults.font_string when data is NULL (set_fgcolor): likewise for fgcolor_string (set_bgcolor): likewise for bgcolor_string * src/manage.c (ungrab_top_level_keys): properly grab capital letters. * src/main.c (init_defaults): init fgcolor_string, bgcolor_string, and font_string * src/input.c (grab_key): change keysym type to KeySym. convert keysym to keycode. All callers updated. 2004-04-18 Shawn Betts * src/actions.c (cmd_set): if non-interactive and no arguments are specified, then output the current value of all variables. * src/messages.h (MESSAGE_PROMPT_SELECT_VAR): new define (MESSAGE_PROMPT_VAR_VALUE): likewise * src/actions.h (cmd_set): new prototype * src/actions.c (user_commands): remove all def* commands. Add 'set' command. rename all cmd_def* commands to set_*. Add prototypes for set_* commands. (struct set_var): new struct (set_vars): new static global (cmd_set): new function (var_completions): new function (initialize_default_keybindings): add aliases for def* commands * src/events.c (configure_request): only display a raise request if the window isn't already focused. * src/manage.h (ungrab_keys_all_wins): new prototype (grab_keys_all_wins): likewise * src/manage.c (grab_top_level_keys): renamed from grab_prefix_key (all callers updated). Grab all keys in the top level keymap. (ungrab_top_level_keys): renamed from ungrab_prefix_key (all callers updated). ungrab all keys in the top level keymap. (ungrab_keys_all_wins): new function (grab_keys_all_wins): likewise * src/globals.c: (rp_key_hook): rename from rp_prefix_hook. Dependant code updated. (set_rp_window_focus): change 'prefix' hook to 'key' hook. * src/events.c (handle_key): handle a top level key press. (handle_key): new arguments ks, and mod. (key_press): pass the keysym and modifier to handle_key * src/conf.h (TOP_KEYMAP): new define * src/actions.c (cmd_v_split, cmd_h_split): swap names. (user_commands): bind split to cmd_v_split. (initialize_default_keybindings): initialize the top level keymap (cmd_definekey): update the keys grabbed when changing a key on the top level keymap. (cmd_escape): update the escape key in the top level map. (cmd_delkmap): don't allow the deletion of the top level keymap. 2004-04-03 Shawn Betts * src/main.c (init_defaults): init frame_selectors. * src/data.h (struct rp_defaults): new field, frame_selectors. * src/actions.h (cmd_defframesels): new prototype * src/actions.c (user_commands): new command defframesels (frame_selector): new function (frame_selector_match): likewise (cmd_defframesels): likewise (cmd_fselect): use default.frame_selectors to select a frame. 2004-03-01 Shawn Betts * configure.in: fix check for Xinerama.h 2004-02-27 Shawn Betts * src/screen.c (screen_free_nums): new function. prototype added (init_screens): init rp_frame_numset (init_screen): set screen's frames_numset to rp_frame_numset * src/globals.h: new global prototype, rp_frame_numset * src/globals.c: new global, rp_frame_numset * src/split.c (find_last_frame): find the last from of all the screens. prototype updated. Callers updated. (find_frame_number): search all screens. prototype updated. callers updated. * src/actions.c (cmd_fselect): select from frames in all screens. * src/window.c (give_window_focus): save the mouse position before checking if win is NULL. (give_window_focus): set rp_current_screen to xine_screen_num of the window's screen. (set_active_window): when using xinerama get the frame from the current screen. * src/split.c (set_frames_window): update the window's scr attribute to point to the frame's screen. (find_window_for_frame): when xinerama is being used search all windows. (set_active_frame): update rp_current_screen to point to the frame's screen. * src/screen.h (init_screens): new prototype (is_rp_window_for_screen): likewise * src/screen.c: include string.h and X11/cursorfont.h (init_screens): new function (is_rp_window_for_screen): new function. (init_screen): fill in xine_screen_num when using xinerama. * src/ratpoison.h: include xinerama.h * src/manage.c (current_screen): use xine_screen_num to find the current screen. (scanwins): use is_rp_window_for_screen to skip over ratpoison windows. (scanwins): when using xinerama only manage windows inside the viewable area. * src/main.c (main): call init_xinerama and init_screens. Move screen initing code to these functions. (init_rat_cursor): move to screen.c (init_screen): likewise (find_screen): likewise (clean_up): call free_xinerama * src/group.c (group_last_window): only check windows in the current screen, unless xinerama is being used in which case all windows are accessible. (group_next_window): likewise (group_prev_window): likewise * src/globals.h: new globals rp_have_xinerama, xine_screen_num. * src/events.c (new_window): when using xinerama, the new window's screen is the current screen. (key_press): when using xinerama, use the current screen. * src/data.h (struct rp_screen): remove root_attr and add left, top, width, height. All dependant code updated. Add xine_screen_num. * src/actions.c (cmd_remove): show the frame indicator in the new current frame after removing the frame. * src/Makefile.am (ratpoison_SOURCES): add xinerama.c and xinerama.h 2004-02-26 Shawn Betts * src/split.c (hide_frame_indicator): unmap all 'current frame' indicator windows. (show_frame_indicator): hide the 'current frame' indicator before showing it. 2004-01-30 Shawn Betts * src/actions.c (cmd_tmpwm): add an XSync() call 2004-01-25 Ryan Yeske * src/actions.c (sync_wins): Change list_for_each_entry to list_for_each_entry_safe. (cmd_tmpwm): Unhide and maximize each mapped window before spawning a new wm. 2003-11-29 Ryan Yeske * src/communications.c (receive_command_result): Rename from recieve_command_result. From paxed. * src/events.c (handle_signals): s/recieve/receive. 2003-11-24 Shawn Betts * src/main.c (ratpoison_longopts): add "file" (ratpoison_opts): add f: option (print_help): print help for --file option (read_startup_files): take an alternative rc file as an argument and use it if it is non-NULL. (main): parse the --file option. pass alt_rcfile to read_startup_files. 2003-11-22 Shawn Betts * contrib/Makefile.am (pkgdata_DATA): add rpshowall.sh (EXTRA_DIST): likewise 2003-11-17 Shawn Betts * contrib/rpshowall.sh: store ratpoison binary location in RATPOISON env var. * src/ratpoison.h (FD_CLOEXEC): new define (set_close_on_exec): new prototype * src/main.c (ratpoison_longopts): add "interactive" option. (ratpoison_opts): likewise (print_help): print a help line for interactive option. (set_close_on_exec): new function (read_startup_files): call set_close_on_exec on file pointer (main): parse interactive command line option and pass it to send_command. * src/events.c (execute_remote_command): pass the interactive bit to command. * src/communications.c (send_command): send an interactive bit at the beginning of the message. Take an interactive argument. All callers updated. Prototype updated. * src/actions.c (cmd_source): call set_close_on_exec on file pointer. 2003-11-16 Ryan Yeske * contrib/rpshowall.sh: Added file. From Florian Cramer 2003-11-02 Thien-Thi Nguyen * AUTHORS: Add self. * configure.in: Add "--disable-history" handling. Conditionalize libhistory checks accordingly. * README: Mention "--disable history". * src/history.c: Surround most of the code with "#ifdef HAVE_READLINE_HISTORY_H". * src/ratpoison.h: Only #include history.h when "#ifdef HAVE_READLINE_HISTORY_H". * src/main.c (main, clean_up): Only load and save history, respectively, when "#ifdef HAVE_READLINE_HISTORY_H". * src/editor.c (editor_history_previous, editor_history_next): Return EDIT_NO_OP when not "#ifdef HAVE_READLINE_HISTORY_H". (editor_enter): Do not do line expansion or history add when not "#ifdef HAVE_READLINE_HISTORY_H". * doc/ratpoison.texi: Mention that history cycling and processing is not available when ratpoison is configured with the "--disable-history" option. 2003-11-01 Shawn Betts * src/input.c (cook_keycode): null terminate the string. 2003-10-24 Ryan Yeske * contrib/ratpoison.el: Added requires. 2003-10-15 Shawn Betts * src/globals.c (rp_hook_db): add hooks quit and restart (rp_quit_hook): new global (rp_restart_hook): likewise * src/events.c (handle_signals): call the restart and quit hooks 2003-09-24 Shawn Betts * contrib/clickframe.pl: put the patch at the end of the file and make it runnable through patch. * contrib/Makefile.am (EXTRA_DIST): add clickframe.pl (pkgdata_DATA): likewise 2003-09-21 Shawn Betts * src/bar.c (prepare_bar): move and resize the window before mapping it. 2003-09-04 Shawn Betts * src/actions.c (initialize_default_keybindings): use ROOT_KEYMAP in the bind and unbind aliases. 2003-09-02 Shawn Betts * src/main.c (show_welcome_message): search the root keymap for the help binding. (clean_up): call free_keymaps and not free_keybindings. * src/events.c (handle_key): call cmd_readkey to hand actually reading a key from the keyboard. * src/data.h (typedef rp_keymap): new typedef (struct rp_keymap): new struct * src/conf.h (ROOT_KEYMAP): new define * src/actions.h (cmd_readkey): new prototype (cmd_newkmap): likewise (cmd_delkmap): likewise (cmd_definekey): likewise (find_keymap): likewise (keymap_free): likewise (free_keymaps): likewise * src/actions.c (rp_keymaps): new global. remove globals key_actions, key_actions_last, and key_actions_table_size. (user_commands): remove bind and unbind. New commands readkey, newkmap, delkmap, and definekey. (find_keybinding_by_action): take a rp_keymap argument and operate on it. All callers updated. (find_keybinding): likewise (find_command_by_keydesc): likewise (resolve_command_from_keydesc): likewise (add_keybinding): likewise (remove_keybinding): likewise (cmd_definekey): new function (cmd_newkmap): likewise (cmd_delkmap): likewise (keymap_new): likewise (keymap_free): likewise (find_keymap): likewise (free_keymaps): likewise (cmd_bind): remove function. Prototype removed. (cmd_unbind): likewise (initialize_default_keybindings): add aliases for unbind and bind. (ungrab_rat): moved from events.c (grab_rat): likewise 2003-08-30 Shawn Betts * src/input.c (get_more_input): use XGrabKeyboard and XUngrabKeyboard for changing focus to read key presses. * src/events.c (handle_key): use XGrabKeyboard and XUngrabKeyboard for changing focus to read key presses. * src/actions.c (cmd_resize): use XGrabKeyboard and XUngrabKeyboard for changing focus to read key presses. (cmd_license): likewise (cmd_help): likewise (cmd_fselect): likewise 2003-08-29 Shawn Betts * src/window.c (give_window_focus): use set_rp_window_focus. * src/split.c (set_active_frame): use set_window_focus. (blank_frame): likewise * src/main.c (main): use set_window_focus. * src/input.c (get_more_input): use set_window_focus * src/globals.h (set_window_focus): new prototype (set_rp_window_focus): likewise * src/events.c (handle_key): use set_window_focus. * src/actions.c (cmd_resize): use set_window_focus. (cmd_license): likewise (cmd_help): likewise (cmd_tmpwm): likewise (cmd_fselect): likewise * src/globals.c (set_rp_window_focus): new function (set_window_focus): likewise 2003-08-24 Shawn Betts * src/window.c (goto_window): don't do anything if the window is already the current window. (set_active_window): don't abort if last_win and win are the same. 2003-08-22 Shawn Betts * src/window.c (set_active_window): don't do anything if the window is already the focused window. * src/split.c (remove_all_splits): only hide the windows in the current screen. * src/group.h (group_delete_group): new prototype * src/group.c (group_last_window): find the last window in the current screen. (group_next_window): find next window in current screen. (group_prev_window): find previous window in current screen. * src/manage.c (force_maximize): call XSync() after first resize. * src/globals.h (GROUP_DELETE_GROUP_OK): new define (GROUP_DELETE_GROUP_NONEMPTY): likewise * src/actions.h (cmd_gdelete): new prototype * src/actions.c (user_commands): new command gdelete (cmd_gdelete): new command 2003-08-10 Shawn Betts * src/editor.c (editor_enter): return EDIT_ABORT if there was an error with the history retrieval. * src/bar.c (get_mark_box): take the bar padding into account when calculate the top of the highlight bar. (prepare_bar): just use height for the height of the window. (marked_message): add the padding to the height of the window. * src/window.c (give_window_focus): only save the pointer position when win and last_win aren't the same window. * src/actions.h (cmd_listhook): new prototype * src/actions.c (use_commands): new command listhook (cmd_remhook): fix error messages (hook_completions): new function (cmd_listhook): likewise 2003-08-02 Shawn Betts * src/actions.c (cmd_number): rename the window's group number instead of it's internal number. 2003-07-16 Shawn Betts * src/hook.c: include string.h * src/window.c (set_active_window): run the switch window hook. * src/split.c (set_active_frame): run the switch frame hook. * src/ratpoison.h: include hook.h * src/group.h (set_current_group): new prototype * src/group.c (set_current_group): new function * src/globals.h (rp_prefix_hook): new extern (rp_switch_win_hook): likewise (rp_switch_frame_hook): likewise (rp_switch_group_hook): likewise (rp_hook_db): likewise * src/globals.c (rp_prefix_hook): new hook (rp_switch_win_hook): likewise (rp_switch_frame_hook): likewise (rp_switch_group_hook): likewise (rp_hook_db): new global * src/events.c (handle_key): call the prefix hook. * src/data.h (struct rp_hook_db_entry): new struct * src/actions.h (cmd_addhook): new prototype (cmd_remhook): likewise * src/actions.c (user_commands): add commands addhook and remhook. (cmd_windows): show the window bar no matter what if the bar timeout is > 0. (cmd_gnext): call set_current_group (cmd_gprev): likewise (cmd_gnew): likewise (cmd_gselect): likewise (cmd_addhook): new function (cmd_remhook): likewise * src/Makefile.am (ratpoison_SOURCES): add hook.c and hook.h 2003-06-29 Shawn Betts * src/editor.c (editor_enter): return EDIT_ABORT when a history expansion fails. 2003-06-25 Shawn Betts * contrib/rpws: only set RATPOISON if it's not already set. * src/actions.c (cmd_gmove): prompt the user if no group is passed as an argument. * contrib/rpws: call /bin/bash (rp_call): remove extraneous 'function' keyword in function declaration. (ws_init_ws): likewise (ws_init): likewise (ws_save): likewise (ws_restore): likewise (ws_bindings): likewise 2003-06-24 Shawn Betts * contrib/rpws (rp_call): Don't print debug information. * src/actions.c (cmd_resize): fix error message text (cmd_resize): likewise (cmd_defresizeunit): likewise (cmd_defresizeunit): likewise (cmd_chdir): likewise (cmd_frestore): likewise (cmd_frestore): likewise (cmd_defwinliststyle): likewise (cmd_defwinliststyle): likewise (cmd_gmove): likewise (cmd_gmove): likewise (cmd_gmerge): likewise 2003-06-22 Shawn Betts * src/actions.c (cmd_groups): print a * beside the current group. if non-interactively called, return the string. (sync_wins): rewrite. (cmd_groups): always print a column in non-interactive mode. 2003-06-21 Shawn Betts * contrib/Makefile.am (bin_SCRIPTS): add rpws 2003-06-14 Shawn Betts * src/window.c (set_active_window): remove duplicate call to unhide_window, it is made in give_window_focus. Call give_window_focus before calling hide_others. 2003-06-02 Shawn Betts * src/group.c (groups_merge): don't merge a group with itself. * src/bar.c (draw_mark): abort if mark_end is the beginning of the line or the start and end of the mark is the same. * src/actions.c (group_completions): use a group's number if it has no name. 2003-05-31 Shawn Betts * configure.in: check for usleep 2003-05-28 Shawn Betts * src/completions.c (completions_complete): if direction is COMPLETION_PREVIOUS, then set last_match to it's previous entry. * src/globals.h (COMPLETION_NEXT): new define (COMPLETION_PREVIOUS): likewise * src/editor.c (editor_complete): remove prototype (editor_complete_prev): new prototype (editor_complete_next): likewise (editor_insert): make it a static function. update prototype (edit_bindings): add editor_complete_prev. replace editor_complete with editor_complete_next. (editor_complete): call completions_complete (editor_complete_next): new function (editor_complete_prev): likewise * src/completions.h (completions_next_completion): remove prototype (completions_update): likewise (completions_assign): likewise (completions_complete): new prototype * src/completions.c (completions_assign): make it a static function (completions_update): likewise (completions_prev_match): new function (completions_next_match): likewise (completions_complete): renamed from completions_next_completion. call completions_next_match and completions_prev_match. 2003-05-27 Shawn Betts * src/completions.c (completions_next_completion): check c->last_match as a match to partial on a virgin completion. * src/group.c (free_groups): new function * src/group.h (free_groups): new prototype * src/main.c (clean_up): call free_groups * src/actions.c (cmd_fdump): free the string returned by frame_dump. * src/completions.c (completions_update): free new_list. * src/editor.c (input_line_free): free the completions structure in line. * configure.in: add a check for libhistory. * src/editor.c (saved_command): new local global (edit_binding): new typedef (edit_binding): new struct (edit_bindings): new local global (input_line_new): new function (input_line_free): likewise (execute_edit_action): likewise (editor_forward_char): likewise (editor_backward_char): likewise (editor_forward_word): likewise (editor_backward_word): likewise (editor_beginning_of_line): likewise (editor_end_of_line): likewise (editor_delete_char): likewise (editor_backward_delete_char): likewise (editor_kill_word): likewise (editor_backward_kill_word): likewise (editor_kill_line): likewise (editor_backward_kill_line): likewise (editor_history_previous): likewise (editor_history_next): likewise (editor_abort): likewise (editor_no_action): likewise (editor_insert): likewise (editor_enter): likewise (paste_cut_buffer): likewise (paste_primary_selection): likewise (editor_paste_selection): likewise (editor_complete): likewise (editor_forward_char): new prototype (editor_backward_char): likewise (editor_forward_word): likewise (editor_backward_word): likewise (editor_beginning_of_line): likewise (editor_end_of_line): likewise (editor_delete_char): likewise (editor_backward_delete_char): likewise (editor_kill_word): likewise (editor_backward_kill_word): likewise (editor_kill_line): likewise (editor_paste_selection): likewise (editor_abort): likewise (editor_no_action): likewise (editor_enter): likewise (editor_history_previous): likewise (editor_history_next): likewise (editor_complete): likewise (editor_backward_kill_line): likewise * src/sbuf.h (sbuf): add node field. * src/main.c (xrealloc): don't print debugger output (init_defaults): init history_size (main): initialize rp_selection (main): load history (clean_up): save history * src/linkedlist.h (list_first): new macro * src/input.h (free_history): remove prototype (ring_bell): new function * src/input.c: include unistd.h (input_history): remove (input_num_history_entries): likewise (update_input_window): remove prompt, input, and input_len arguments. add line argument. (update_input_window): use line argument. (ring_bell): new function (get_input): take completion_fn argument. prototype and callers updated. (free_history): remove function (get_more_input): take completion_fn argument. prototype and callers updated. use line structure and its functionality. * src/globals.h (MAX_FONT_WIDTH): new define (rp_selection): new extern * src/globals.c (rp_selection): new global * src/completions.h (completions_new): new prototype (completions_free): likewise (completions_assign): likewise (completions_update): likewise (completions_next_completion): likewise * src/completions.c (completions_new): new function (completions_free): likewise (completions_assign): likewise (completions_update): likewise (completions_next_completion): likewise * src/Makefile.am (ratpoison_SOURCES): add editor.c editor.h history.h and history.c * src/data.h (rp_completions): new typedef (rp_input_line): likewise (completion_fn): likewise (rp_defaults): new field, history_size (rp_completions): new struct (rp_input_line): new struct * src/conf.h (MAX_HISTORY_SIZE): new define (HISTORY_FILE): likewise (VISUAL_BELL): likewise (MODIFIER_PREFIX): set to RP_CONTROL_MASK (INPUT_ABORT_MODIFIER): likewise (INPUT_PREV_HISTORY_MODIFIER): likewise (INPUT_NEXT_HISTORY_MODIFIER): likewise (RESIZE_VGROW_MODIFIER): likewise (RESIZE_VSHRINK_MODIFIER): likewise (RESIZE_HGROW_MODIFIER): likewise (RESIZE_HSHRINK_MODIFIER): likewise * src/actions.c (trivial_completions): new function (window_completions): likewise (colon_completions): likewise (exec_completions): likewise (cmd_select): pass window_completions to get_input (cmd_rename): pass trivial_completions to get_input (cmd_colon): pass colon_completions to get_input and get_more_input (cmd_exec): pass exec_completions to get_input (cmd_newwm): pass trivial_completions to get_input (cmd_resize): convert the keysym modifier to something ratpoison understands. 2003-05-25 Shawn Betts * src/Makefile.am (ratpoison_SOURCES): add completions.c and completions.h * src/actions.c (cmd_gmerge): show a message if the group specified by the user could not be found. (cmd_gselect): if the user didn't type anything then return. * src/window.c: do not include ctype.h * src/ratpoison.h (str_comp): new prototype * src/messages.h (MESSAGE_PROMPT_SWITCH_TO_GROUP): new define * src/main.c: include ctype.h (str_comp): moved from window.c * src/group.h (groups_find_group_by_name): new prototype. (groups_find_group_by_number): likewise. (groups_merge): likewise (group_move_window): likewise * src/group.c: include string.h (group_new): new argument, name. All callers updated. prototype updated. (init_groups): create the first group with DEFAULT_GROUP_NAME as its name. (group_new): new argument, name. All callers updated. Prototype updated. (group_free): free the group's name. (group_add_new_group): new argument, name. All callers updated. Prototype updated. (groups_find_group_by_name): new function (groups_find_group_by_number): likewise (group_move_window): likewise (groups_merge): likewise * src/conf.h (DEFAULT_GROUP_NAME): new define * src/actions.h (cmd_gselect): new prototype (cmd_groups): likewise (cmd_gmove): likewise (cmd_gmerge): likewise (cmd_gnewbg): likewise * src/actions.c (user_commands): new commands gselect, groups, gmove, gmerge, gnewbg. (cmd_gnewbg): new function (find_group): likewise (cmd_gselect): likewise (cmd_groups): likewise (cmd_gmove): likewise (cmd_gmerge): likewise * src/bar.c (reset_alarm): new function (show_bar): call reset_alarm() (count_lines): make function static. clean up code. (max_line_length): likewise (pos_in_line): likewise (line_beginning): likewise (draw_string): new static function (correct_mark): likewise (prepare_bar): likewise (get_mark_box): likewise (draw_inverse_box): likewise (draw_mark): likewise (update_last_message): likewise (marked_message): Move most of the code to seperate function calls. Call reset_alarm(), prepare_bar(), draw_string(), correct_mark(), draw_mark(), and update_last_message(). * src/actions.c (cmd_select): fix crash bug. * src/window.c (get_window_list): mark_end is the length of the string. Don't do a special case if the window list is being displayed as a column. * src/input.c (read_key): Do not wait for the key release event. Remove gobble_rel argument. Callers updated. 2003-05-24 Shawn Betts * src/group.h (group_resort_window): new prototype * src/group.c (group_find_window_by_number): return rp_window_elem*. Dependant code updated. (group_insert_window): new function (group_in_list): likewise (group_resort_window): likewise (group_map_window): insert the window and sort the list. * src/actions.c (cmd_number): Change the group number of the window. (cmd_resize): print an error message if the command was called interactively with <2 arguments. 2003-05-21 Shawn Betts * src/actions.c (cmd_resize): fail if data == NULL when called non-interactively. 2003-05-20 Shawn Betts * src/linkedlist.h: Move all C function to linkedlist.c 2003-05-19 Shawn Betts * src/window.c (find_window): add debugging output describing which window list the window was found in. * src/group.c (group_new): assign the group's number the number passed as an argument. * src/events.c (destroy_window): withdraw iconified and normal windows before unmanaging them. (handle_signals): delete the node from the list before freeing it. * src/bar.h (message): remove define. (marked_wrapped_message): remove prototype (message): new prototype * src/bar.c (message): new function (marked_wrapped_message): renamed to marked_message. remove marked_message. 2003-05-18 Shawn Betts * src/bar.c (marked_wrapped_message): Free the GC's created with XCreateGC. 2003-05-17 Shawn Betts * configure.in: version bump to 1.3.0-cvs * src/main.c (chld_handler): Variable declaration placed in proper location. * src/actions.c (spawn): always put the DISPLAY string in the environment. 2003-05-16 Shawn Betts * src/window.c (add_to_window_list): add the window to the current group. (find_window_name): search the current group for a matching window. (find_window_other): likewise. (format_window_name): take a rp_window_elem as an argument, not an rp_window. Print the group window's number, not the window's internal number. (get_window_list): loop through the current group. * src/split.c (find_window_for_frame): search the current group for a window to fit in the frame. * src/ratpoison.h: include globals.h and group.h * src/manage.c (unmanage): remove the window from any groups it was in. (map_window): map the window in any groups it is in. (withdraw_window): unmap the window in any groups it is in. * src/main.c: Move all globals to globals.h (main): initialize the group functions. * src/data.h: Move all defines and extern globals to globals.h (struct rp_window_elem): new struct (struct rp_group): likewise * src/actions.h (cmd_gnext): new prototype (cmd_gprev): likewise (cmd_gnew): likewise * src/actions.c (user_commands): new commands gnext, gprev, and gnew (cmd_prev): fix to work with new group code. (cmd_next): likewise (cmd_gnext): new function (cmd_gprev): likewise (cmd_gnew): likewise * src/Makefile.am (ratpoison_SOURCES): add files globals.h, globals.c, group.h and group.c 2003-05-15 Shawn Betts * src/data.h (struct rp_frame): renamed from rp_window_frame. All dependant code updated. * src/main.c: remove child_info global. Add rp_children global. (chld_handler): update the terminated and status fields of any terminated children. * src/events.c (handle_signals): loop through each child process and remove them from the list. Print a message for any child that doesn't return a 0 status. * src/data.h (rp_child_info): new fields, terminated and node. remove child_info global. Add rp_children global. * src/actions.c (spawn): Add the command to the list of children. 2003-05-14 Shawn Betts * src/data.h (struct rp_screen): rename from screen_info. Dependant code updated. 2003-05-09 Shawn Betts * src/manage.h (clear_unmanaged_list): new prototype (list_unmanaged_windows): likewise (add_unmanaged_window): likewise * src/manage.c (unmanaged_window_list): no longer a const. (num_unmanaged_windows): new static global (clear_unmanaged_list): new function (list_unmanaged_windows): likewise (add_unmanaged_window): likewise (unmanaged_window): use num_unmanaged_windows to tell how many elements are in the unmanaged list. * src/actions.h (cmd_unmanage): new prototype (cmd_clrunmanaged): likewise * src/actions.c (user_commands): new commands unmanage, clrunmanaged. (cmd_unmanage): new function (cmd_clrunmanaged): likewise * src/split.c (split_frame): call update_bar() instead of update_window_names(). (set_active_frame): likewise (blank_frame): likewise * src/bar.h (update_bar): new prototype. * src/bar.c (BAR_IS_HIDDEN): new define. (update_bar): new function. * src/actions.c (cmd_frestore): call update_bar() instead of update_window_names(). * src/split.c (set_active_frame): update the window list after switching frames. (blank_frame): update the window list after blanking the screen. * src/actions.c (cmd_frestore): update the window list after restoring the frames. * src/split.c (split_frame): update the window list after the split. 2003-04-13 Shawn Betts * src/main.c (main): if the screen was specified on the command-line, send the command to the correct screen. * src/communications.c (send_command): new argument, screen_num. Get the root window for the specified screen. prototype updated. * src/main.c (init_screen): print the display string for debugging. (ratpoison_opts): fix -c option by adding a : after it. * src/manage.c (current_screen): search for the current screen using rp_current_screen. * src/main.c (main): add switch case for the display command line option. (print_help): add --display option. Add text to demonstrate --display and --command take an argument. (ratpoison_longopts): add display. (ratpoison_longopts): add screen. (ratpoison_opts): add 'd' (ratpoison_opts): add 's' (main): parse the screen argument and process it. (print_help): add --screen * src/manage.c (get_wmname): add debugging output to print returned elements from X11 call. 2003-04-11 Shawn Betts * src/manage.c (get_wmname): add a debug line to print the property returned. (get_wmname): add newline in debug print out. (get_wmname): fail if n is 0. * src/window.c (window_name): use WIN_NAME_* defines for possible defaults.win_name values. (window_name): remove case WIN_NAME_TITLE and glob it with the default switch. * src/main.c (init_defaults): use WIN_NAME_* defines for possible defaults.win_name values. * src/actions.c (cmd_defwinname): use WIN_NAME_* defines for possible defaults.win_name values. (cmd_defwinname): likewise * src/data.h (WIN_NAME_TITLE): new define (WIN_NAME_RES_CLASS): new define (WIN_NAME_RES_NAME): new define * src/window.c (add_to_window_list): use xstrdup to create the default value for user_name. 2003-04-10 Shawn Betts * src/events.c (unmap_notify): fix crash bug in NormalState case. 2003-04-09 Shawn Betts * configure.in (TERM_PROG): Add doc string * src/events.c (receive_command): handle the case when more than one client requests a command (fix infinite loop bug). 2003-04-08 Shawn Betts * src/main.c (WAIT_ANY): define it if it isn't already define. 2003-04-07 Shawn Betts * src/input.c (read_key): remove the local variable, key_presses. * src/Makefile.am (ratpoison_SOURCES): add linkedlist.h * src/bar.c (marked_message): pass correct arguments to bar_y. * src/actions.c (cmd_defwinliststyle): error messages print the correct command name. 2003-04-06 Shawn Betts * src/actions.h: All cmd_* functions take char* instead of void*. All callers updated. * src/bar.c (marked_wrapped_message): make the marked line span the whole line. * src/actions.c (cmd_number): update any frames pointing to the windows that have changed. 2003-04-05 Shawn Betts * src/window.c (get_window_list): if window_list_style is STYLE_COLUMN then the end of the mark is the length of the buffer minus the start of the mark. * src/main.c (init_defaults): init window_list_style to STYLE_ROW. * src/input.c (update_input_window): store the height in a variable. * src/data.h (struct rp_defaults): new member, window_list_style. * src/bar.h [message]: wrap msg arg in parens. (marked_wrapped_message): new prototype * src/bar.c (bar_y): new argument, height. All callers updated. (bar_y): use height in calculations. (update_window_names): print a column of windows if defaults.window_list_style is in column mode. (count_lines): new function (max_line_length): likewise (pos_in_line): likewise (line_beginning): likewise (marked_wrapped_message): likewise * src/actions.c (user_commands): new commands 'verbexec' and 'defwinliststyle'. Move @end take to after the def* commands. (cmd_verbexec): new function. Added prototype. (cmd_defwinliststyle): likewise 2003-04-04 Shawn Betts * src/split.c (set_active_frame): fix NULL pointer crash bug. * src/actions.c (cmd_setenv): properly parse the environment name and value using strtok. * src/window.c (add_to_window_list): init the window's frame_number to EMPTY. * src/number.h (numset_clear): new prototype * src/manage.c (unmanage)[AUTO_CLOSE]: code update for new globals. * src/frame.c (frame_new): init f->last_access to 0. (frame_dump): dump the X11 window ID, not the window number. (frame_read): new function * src/events.c (destroy_window): just unmanage the window. * src/actions.h (cmd_fdump): new prototype (cmd_frestore): likewise * src/actions.c (user_commands): new commands "fdump" and "frestore". (cmd_fdump): new function (cmd_frestore): likewise * src/number.c (numset_clear): new function. 2003-03-31 Shawn Betts * src/window.c (set_current_window): use current_frame() * src/split.h (current_frame): new prototype * src/split.c (current_frame): new function (current_window): use current_frame() (split_frame): likewise (remove_all_splits): likewise (set_active_frame): likewise (show_frame_message): likewise (remove_all_splits): use current_screen() * src/actions.c (cmd_prev_frame): use current_frame() (cmd_next_frame): likewise (cmd_select): likewise (cmd_h_split): likewise (cmd_v_split): likewise (cmd_remove): likewise (cmd_shrink): likewise (cmd_resize): likewise (cmd_focusup): likewise (cmd_focusdown): likewise (cmd_focusleft): likewise (cmd_focusright): likewise 2003-03-30 Shawn Betts * src/split.c (current_window): call screen_get_frame. (split_frame): call screen_get_frame to get appropriate structure. (split_frame): call find_window_number to get appropriate structure. (remove_all_splits): call screen_get_frame to get appropriate structure. (resize_frame): make sure all frames that will be resized are big enough for the resize. (resize_frame): return int (resize_shrink_to_window): call find_window_number to get the appropriate structure. (resize_frame_right): return int (resize_frame_left): likewise (resize_frame_top): likewise (resize_frame_bottom): likewise (resize_frame_horizontally): backup the frameset and restore it if the resize fails. Do not allow a frame to be resized too small or too big. (resize_frame_vertically): likewise (remove_frame): call find_window_number to get the appropriate structure. (set_active_frame): likewise (blank_frame): likewise (show_frame_message): call screen_get_frame to get the appropriate structure. * src/screen.c (screen_width): new function (and prototype) (screen_height): likewise (screen_left): likewise (screen_right): likewise (screen_top): likewise (screen_bottom): likewise (screen_copy_frameset): likewise (screen_restore_frameset): likewise (frameset_free): likewise (screen_get_frame): likewise * src/split.c (maximize_frame): call screen_width and screen_height to get the size for the frame. * src/ratpoison.h: include screen.h * src/manage.c (move_window): * src/frame.h (frame_copy): new prototype (frame_dump): likewise * src/frame.c (frame_copy): new function (frame_dump): likewise * src/events.c (unmap_notify): compare frame numbers, not pointers. (client_msg): call screen_get_frame when blanking the frame. * src/data.h (EMPTY): new define (struct rp_window_frame): replace the win field with win_number. Dependant code updated. (struct rp_window): replace frame with frame_number. Dependant code updated. (struct screen_info): replace rp_current_frame with current_frame and change type to int. Dependant code updated. * src/Makefile.am (ratpoison_SOURCES): added screen.h and screen.c 2003-03-25 Shawn Betts * src/split.h (show_frame_message): new prototype * src/split.c (show_frame_message): new function * src/main.c (init_screen): listen for key release events in the key_window and input_window. * src/input.c (read_key): new argument, gobble_rel. All callers updated. * src/actions.c (cmd_remove): only remove the current frame if it isn't the ONLY one. (cmd_remove): display a message informing the user if the frame cannot be removed. (cmd_resize): clean up resize loop. (cmd_resize): display a window indicating which frame is being resized. 2003-03-23 Shawn Betts * src/split.c (resize_frame_vertically): fix typo error (frame_top not frame_left). 2003-03-17 Shawn Betts * src/split.c (resize_frame_horizontally): only resize to the left if the frame isn't against the left side of the screen. (resize_frame_vertically): only resize to the left if the frame isn't against the top of the screen. * src/actions.c (initialize_default_keybindings): add keybindings for fselect and resize. Move keybinding for curframe. * src/split.c (create_initial_frame): call frame_new to allocate a frame. (split_frame): likewise * src/main.c (free_screen): call frame_free to free the screen frames. * src/frame.h (frame_new): new prototype (frame_free): likewise * src/frame.c (frame_new): new function. (frame_free): likewise 2003-03-07 Shawn Betts * src/Makefile.am (ratpoison_SOURCES): add frame.c and frame.h * src/frame.h (frame_left): new prototype (frame_top): likewise (frame_right): likewise (frame_bottom): likewise (frame_width): likewise (frame_height): likewise (frame_resize_left): likewise (frame_resize_right): likewise (frame_resize_up): likewise (frame_resize_down): likewise (frame_move_left): likewise (frame_move_right): likewise (frame_move_up): likewise (frame_move_down): likewise * src/frame.c (frame_left): new function (frame_top): likewise (frame_right): likewise (frame_bottom): likewise (frame_width): likewise (frame_height): likewise (frame_resize_left): likewise (frame_resize_right): likewise (frame_resize_up): likewise (frame_resize_down): likewise (frame_move_left): likewise (frame_move_right): likewise (frame_move_up): likewise (frame_move_down): likewise * src/split.c (resize_frame): new function (resize_frame_right): likewise (resize_frame_left): likewise (resize_frame_top): likewise (resize_frame_bottom): likewise (resize_frame_horizontally): use resize_frame_right and resize_frame_left to do the resizing. (resize_frame_vertically): use resize_frame_top and resize_frame_bottom to do the resizing. * src/ratpoison.h (PRINT_ERROR): flush stdout (PRINT_DEBUG): likewise include frame.h 2003-03-06 Shawn Betts * src/split.h (find_frame_number): new prototype * src/split.c (create_initial_frame): give a number to the initial frame (split_frame): give the new frame a unique number (split_frame): add the new frame after the current frame (remove_all_splits): return the frame's number when deleting it. (remove_frame): likewise (find_frame_number): new function * src/main.c (init_screen): initialize the frames_numset member (free_screen): free the frames_numset member * src/data.h (struct screen_info): new member, frames_numset * src/actions.h (cmd_fselect): new prototype * src/actions.c (user_commands): new command "fselect" (cmd_fselect): new function * src/Makefile.am (ratpoison_SOURCES): remove list.h and list.c, add window.c and window.h * src/ratpoison.h: include window.h instead of list.h * src/main.c (main): call init_window_stuff(). Remove call to init_numbers(). (clean_up): call free_window_stuff(). Remove call to free_numbers(). * src/list.h (free_window_stuff): new prototype (init_window_stuff): likewise * src/list.c (rp_window_numset): new global (init_window_stuff): new function (free_window_stuff): new function * src/data.h (rp_window_numset): new extern * src/number.c (numset_init): new function (number_is_taken): rename to numset_num_is_taken, callers updated. (find_empty_cell): rename to numset_find_empty_cell, callers updated. (add_window_number): rename to numset_add_num, callers updated. (return_window_number): rename to numset_release, callers updated. (init_numbers): remove function (free_numbers): rename to numset_free, callers updated. (numset_num_is_taken): take struct numset* as an argument. (numset_find_empty_cell): likewise (numset_add_num): likewise (numset_request): likewise (numset_release): likewise (numset_free): likewise (numset_new): new function 2003-02-27 Shawn Betts * src/main.c (free_screen): new function (clean_up): call free_screen on each screen. free the screen array. free defaults.window_fmt. * src/number.h (free_numbers): new prototype * src/number.c (free_numbers): new function * src/manage.c (get_wmname): use XGetWindowProperty to get the window name. (unmanaged_window): free wname after using it. * src/main.c (wm_name): new global (main): internalize WM_NAME atom. (clean_up): free data structures for keybindings, aliases, the bar, window numbers, and input history. * src/input.h (free_history): new prototype * src/input.c (free_history): new function * src/events.c (execute_remote_command): free properties returned by XGetWindowProperty(). * src/data.h (wm_name): new extern * src/communications.c (recieve_command_result): free properties returned by XGetWindowProperty(). * src/bar.h (free_bar): new prototype * src/bar.c (update_window_names): bar_buffer is not static. (update_window_names): free bar_buffer after using it. (marked_message): free the GC after using it. (free_bar): new function. * src/actions.h (free_keybindings): new prototype (free_aliases): likewise * src/actions.c (free_keybindings): new function (free_aliases): likewise (cmd_tmpwm): unmap the key window before calling the new wm, and remap it afterwards. 2003-02-24 Shawn Betts * src/actions.c (cmd_tmpwm): unmap the key window before spawning the wm and map it afterwards. 2003-02-23 Shawn Betts * src/split.c (remove_all_splits): fix bug hiding windows not in the current frame. * src/split.h (cleanup_frame): new protoype * src/manage.c (scanwins): added better debugging output * src/events.c (cleanup_frame): move to split.c (handle_key): ungrab the rat right after we read the key. * src/actions.h (cmd_tmpwm): new prototype. * src/actions.c (spawn): return the pid of the child process. prototype updated. (cmd_tmpwm): new function (user_commands): new command, tmp_wm. 2003-02-22 Shawn Betts * configure.in: don't check for variable argument support in preprocessor. * src/ratpoison.h (PRINT_LINE): new macro. (PRE_PRINT_LOCATION): remove macro (PRINT_ERROR): takes one argument which is the argument list ,parens and all, to be passed to printf. Callers updated. * src/linkedlist.h (list_direction_entry): no longer returns NULL if there is only one element in the list. Instead, returns the same element again and again. * src/actions.c (cmd_number): use list delete entry macro (cmd_number): likewise (cmd_escape): use list looping macro (cmd_escape): likewise (cmd_defpadding): likewise (cmd_defborder): likewise * src/data.h: include linkedlist.h (struct rp_window_frame): use struct list_head instead of next, prev pointers. (struct rp_window): likewise (struct screen_info): rename rp_window_frame_sentinel to rp_window_frames and change it's type to list_head. * src/events.c (mapping_notify): use list looping macro (mapping_notify): likewise * src/list.c: rename rp_unmapped_window_sentinel to rp_unmapped_window and rp_mapped_window_sentinel to rp_mapped_window. Use LIST_HEAD to create them. externs updated. (add_to_window_list): use list add entry macro. (find_window_in_list): list head is of type list_head. Prototype and callers updated. (find_window_in_list): use list looping macro (init_window_list): remove function (find_window_number): use list looping macro (find_window_name): likewise (find_window_prev): use list previous entry macro (find_window_next): use list next entry macro (find_window_other): use list looping macro (append_to_list): remove function (insert_into_list): use list looping macro (insert_into_list): use list add entry macro (remove_from_list): remove function (get_window_list): use list looping macro * src/main.c (main): do not call init_window_list() * src/manage.c (unmanage): use list delete macro (map_window): likewise (withdraw_window): use list moving macro to move entry to another list. (hide_others): use list looping macro * src/split.c (num_frames): use list looping macro (frames_screen): likewise (maximize_all_windows_in_frame): likewise (delete_frame_from_list): remove function (create_initial_frame): remove list init code. Add current frame to screen's frame list. (init_frame_list): use list init macro (find_last_frame): use list looping macro (find_windows_frame): likewise (find_frame_next): use list next entry macro (find_frame_prev): use list previous entry macro (find_window_for_frame): use list looping macro (split_frame): use list add entry macro (remove_all_splits): use list looping macro (resize_frame_vertically): likewise (resize_frame_horizontally): likewise (total_frame_area): likewise (frame_overlaps): likewise (remove_frame): likewise (find_frame_up): likewise (find_frame_down): likewise (find_frame_left): likewise (find_frame_right): likewise 2003-02-10 Shawn Betts * src/split.h (num_frames): new prototype (resize_shrink_to_window): likewise (resize_frame_vertically): likewise (resize_frame_horizontally): likewise * src/split.c (num_frames): no longer a static function (resize_shrink_to_window): new function (resize_frame_vertically): likewise (resize_frame_horizontally): likewise * src/main.c (init_defaults): init frame_resize_unit. * src/data.h (struct rp_defaults): new member frame_resize_unit. * src/conf.h (RESIZE_VGROW_KEY): new define (RESIZE_VGROW_MODIFIER): likewise (RESIZE_VSHRINK_KEY): likewise (RESIZE_VSHRINK_MODIFIER): likewise (RESIZE_HGROW_KEY): likewise (RESIZE_HGROW_MODIFIER): likewise (RESIZE_HSHRINK_KEY): likewise (RESIZE_HSHRINK_MODIFIER): likewise (RESIZE_SHRINK_TO_WINDOW_KEY): likewise (RESIZE_SHRINK_TO_WINDOW_MODIFIER): likewise (RESIZE_END_KEY): likewise (RESIZE_END_MODIFIER): likewise * src/actions.h (cmd_shrink): new prototype (cmd_resize): likewise (cmd_defresizeunit): likewise * src/actions.c (user_commands): add commands cmd_resize and cmd_shrink, and cmd_defresizeunit. (cmd_shrink): new function (cmd_resize): likewise (cmd_defresizeunit): likewise 2003-01-30 Shawn Betts * src/actions.c (cmd_bind): more informative error messages (cmd_unbind): likewise (cmd_source): likewise (cmd_select): likewise (cmd_number): likewise (cmd_escape): likewise (cmd_h_split): likewise (cmd_v_split): likewise (cmd_rudeness): likewise (cmd_gravity): likewise (cmd_defwingravity): likewise (cmd_deftransgravity): likewise (cmd_defmaxsizegravity): likewise (cmd_msgwait): likewise (cmd_defbargravity): likewise (cmd_defbargravity): likewise (cmd_defborder): likewise (cmd_defbarborder): likewise (cmd_definputwidth): likewise (cmd_definputwidth): only accept input widths >=0 (cmd_chdir): add error message if HOME environment variable is not set. (cmd_chdir): add error message if chdir fails. (cmd_rudeness): only accept rudeness numbers between 0 and 15 (cmd_msgwait): only accept waiting times >=0 2003-01-25 Shawn Betts * src/actions.c (cmd_help): Print key binding when called non-interactively. (cmd_defwaitcursor): error message correctly shows what command the error occurred in. (cmd_rudeness): rudeness data correctly stored in rudeness variables. 2002-12-11 Shawn * configure.in (AC_CHECK_FUNCS): Add check for putenv, remove check for setenv and unsetenv. * src/actions.c (setenv): remove function (unsetenv): likewise (cmd_setenv): use putenv instead of setenv. (cmd_unsetenv): likewise 2002-12-09 Shawn Betts * src/actions.c (spawn): only add DISPLAY to the environment if it isn't already there. 2002-11-24 Shawn Betts * src/main.c: include sys/wait.h (chld_handler): new function * src/events.c: include sys/wait.h (handle_signals): Print an error message in the case of a child signal. * src/data.h (struct rp_child_info): New struct. (child_info): New global. (chld_signalled): likewise * src/actions.c (spawn): Let the SIGCHLD handler handle process completion instead of doing an ugly dance. 2002-11-20 Shawn Betts * src/ratpoison.h[!HAVE_VARARG_MACROS]: PRINT_ERROR and PRINT_DEBUG are defined as void macros. * src/events.c (client_msg): Add semicolon to the end of a PRINT_DEBUG line. * src/actions.c (cmd_bind): typecast data as a (char *) before using it in (char *) pointer arithmetic. * configure.in: Add check to see if the preprocessor has variable argument macro capabilities. * src/main.c (init_defaults): set pointer warping to on by default. * src/list.c (give_window_focus): only warp the pointer if the warp setting is turned on. * src/data.h (struct rp_defaults): new member, warp. * src/actions.h (cmd_ward): new prototype * src/actions.c (user_command): new command "warp" (cmd_warp): new function 2002-10-18 Shawn Betts * src/actions.c (read_split): a negative number means subtract the pixels from the frame's current size to get the new frame's size. * src/split.c (VERTICALLY): new define (VERTICALLY): likewise (split_frame): new argument 'pixels'. The current frame is split and resized to 'pixels' pixels. (v_split_frame): new argument 'pixels'. prototype updated. (h_split_frame): likewise * src/actions.c (user_commands): hsplit, vsplit, and split take a string argument. (read_split): new function (cmd_h_split): takes a ratio or number to determine how big the frame split will be. (cmd_v_split): likewise 2002-08-31 Shawn Betts * src/actions.c (cmd_bind): malloc the correct amount of memory for keydesc (cmd_unbind): likewise 2002-07-28 Shawn Betts * src/main.c (handler): do not report badwindow errors if IGNORE_BADWINDOW is define. * src/conf.h (IGNORE_BADWINDOW): new define 2002-07-06 Shawn Betts * src/actions.c (cmd_help): key descriptions don't run off the bottom of the screen. 2002-03-23 Shawn Betts * src/actions.c (command): look for the command in the aliases before looking in the command list. * src/actions.h (cmd_unalias): new prototype * src/actions.c (user_commands): new command unalias (cmd_unalias): new function 2002-04-25 Gergely Nagy * src/actions.c: include include setenv implementation if HAVE_SETENV is not set, OR setenv is not defined (removes a compiler warning on AIX) * src/events.c: include * src/getopt.c: include 2002-03-13 Shawn Betts * src/actions.c (cmd_nextscreen): An error message is displayed when there is only 1 screen. (cmd_prevscreen): likewise * src/split.c (set_active_frame): fix to operate properly with multiple screens. * src/data.h (struct rp_window_frame): new data member 'number'. * src/actions.h (cmd_prevscreen): new prototype (cmd_nextscreen): likewise * src/actions.c (user_commands): new commands "nextscreen" and "prevscreen" (cmd_nextscreen): new function (cmd_prevscreen): likewise 2002-02-19 Shawn Betts * src/split.c: include string.h * src/sbuf.c: likewise * src/events.c: likewise * src/communications.c: likewise 2002-02-17 Shawn Betts * src/manage.c (update_normal_hints): fix debugging output to be more readable. * src/events.c (configure_request): call XSync after granting configure request. (property_notify): maximize the window on receiving a normal hints property change. 2002-02-16 Shawn Betts * src/manage.c (maximize): remove calls to XSelectInput. (force_maximize): likewise (unhide_window): likewise (unhide_window_below): likewise * src/events.c (configure_notify): remove function. (configure_request): grant the request, then immediately maximize the window. (delegate_event): ignore ConfigureNotify events. (configure_request): grant the request if ratpoison isn't managing the window. 2002-02-14 Shawn Betts * src/actions.c (cmd_license): redraw the bar if it was visible. (cmd_help): likewise * configure.in: fix the --enable-debug help string. * src/events.c (configure_request): Ignore the configure notify event caused by the geometry change if the window is not mapped. * src/manage.c (maximize_transient): correctly detect when the window is bigger than its frame. (maximize): ignore the structure events generated by the maximize (force_maximize): likewise (unhide_window): likewise (unhide_window_below): likewise * src/events.c (configure_notify): Clear up ambiguous debugging output. (configure_request): initialize the changes structure to the window's current attributes. 2002-02-07 Shawn Betts * src/split.h (find_last_frame): prototype now correctly reflects the actual function. * src/events.c (configure_notify): ignore substructurenotify events. Add more debugging statements. * src/actions.c (cmd_focuslast): pass the current screen to the call to find_last_frame. 2002-02-02 Shawn Betts * src/actions.c (cmd_defbarpadding): print an error message if defbarpadding is called interactively without arguments. * src/events.c (handle_signals): only hide the bar if it times out. * src/bar.c (marked_message): Fix text marking bug. 2002-02-01 Shawn Betts * src/actions.c (command): bail out if alias recursion gets too deep. * src/conf.h (MAX_ALIAS_RECURSIVE_DEPTH): new define * src/bar.c (bar_x): update to work with all X11 gravity values. (bar_y): likewise * src/actions.c (cmd_defbargravity): Rename from cmd_defbarloc. Dependant code updated. (cmd_defbargravity): accept all gravity arguments. 2002-01-26 shawn * configure.in: check for the vsnprintf function and stdarg.h header. * src/main.c (xvsprintf): Cleaned up to call vsnprintf only in one place. wrap the vsnprintf call with va_copy (or __va_copy) and va_end. * src/list.c (format_window_name): If res_class or res_name are NULL use "None" instead. * src/actions.c (alias_t): rename data structure from cmd_alias to avoid a name clash with the function cmd_alias. Dependant code updated. * src/list.c (set_active_window): Corrected a bug in determining what a maxsize window is. Only one of width or height must be less than the screen width or height for a window to qualify as a maxsize window. 2002-01-24 shawn * src/actions.c (cmd_defbarloc): Read the location argument as a gravity argument using parse_wingravity. (cmd_defbgcolor): don't set the background color for key_window. (cmd_deffgcolor): don't set the foreground color for key_window. * src/messages.h (MESSAGE_FRAME_STRING): Pad the string with spaces on both sides. * src/main.c (init_screen): Create the frame, input, and bar windows with a border width of defaults.bar_border_width. (init_defaults): initialize defaults.bar_border_width * src/bar.c (bar_x): Incorporate defaults.bar_border_width into calculations. (bar_y): likewise * src/actions.h (cmd_defbarborder): new prototype * src/actions.c (user_commands): new command "defbarborder" (cmd_defbarborder): new function * src/main.c (init_screen): create the help window with a 0 border width. * src/actions.c (find_alias_index): new function (cmd_alias): When an alias is already in the alias list, replace it with the new alias. (command): Append to the end of alias command the arguments passed in before evaluating the alias. * src/events.c (configure_request): do not send a synthetic configure notify event. * src/actions.c (wingravity_to_string): Fix the north gravity string to return "n" not "ng". (cmd_defborder): return NULL when no (or a bad) argument is passed in. 2002-01-23 Shawn * src/manage.c (send_configure): Change parameters to X11 window, x, y, width, height and border. Prototype updated. All callers updated. * src/events.c (configure_request): For the changes variable, fill in geometry parameters not part of the request with the window's geometry. * src/manage.c (update_normal_hints): improve debugging output. 2002-01-17 Gergely Nagy * debian/changelog: update for a new snapshot * doc/ratpoison.1, doc/ratpoison.texi (Keystrokes): removed false statement that C-t C-: is bound to colon. 2002-01-15 Shawn Betts * src/input.c (keysym_to_string): handle the case when XKeysymToString returns NULL. 2002-01-11 shawn * src/main.c (handler): store the error text at the beginning of the string instead of 7 bytes in. 2002-01-10 shawn * src/events.c (delegate_event): ignore the CirculateRequest event. * src/actions.c (cmd_rename): Allows the user to specify a second argument which is the number of the window whose number will be set to the first argument. 2002-01-09 Gergely Nagy * src/actions.c (setenv, unsetenv): new functions, used when the system libc does not have them. * configure.in: check for the presence of setenv and unsetenv. 2002-01-02 shawn * src/main.c (init_screen): do not select on any events for the bar_window and the frame_window. * src/events.h (listen_for_events): new prototype * src/events.c (configure_notify): If the event dimensions don't match the windows, then re-maximize the window. (configure_request): always grant the requests. (delegate_event): Changes to the debugging output. (delegate_event): Don't print debugging messages for events that ratpoison doesn't need to handle. (handle_signals): new function (listen_for_events): new function (handle_events): remove function. Dependant code uses listen_for_events. (get_event): likewise * src/manage.h (get_state): new prototype * src/manage.c (update_normal_hints): print only the hints that are set as debugging output. (scanwins): collect mapped and iconized windows. (get_state): new function * src/main.c (clean_up): don't map iconized windows. 2001-12-21 shawn * src/actions.h (cmd_alias): new prototype * src/actions.c (user_commands): remove "license" from the unimplemented section. (user_commands): new command "alias" (cmd_alias): new function (command): handle aliases (initialize_default_keybindings): initialize the alias list (struct cmd_alias): new struct (alias_list): new static global (alias_list_size): likewise (alias_list_last): likewise * src/actions.h (cmd_license): new prototype * src/actions.c (cmd_license): new function (user_commands): new command "license" (initialize_default_keybindings): bind "license" to V and C-V * src/list.c (format_window_name): print unrecognized formatting options. * src/manage.c (unmanage): set the kill_signalled variable. * src/actions.c (wingravity_to_string): new function (cmd_gravity): return the current value when data is NULL (cmd_defwingravity): likewise (cmd_deftransgravity): likewise (cmd_defmaxsizegravity): likewise (cmd_msgwait): likewise (cmd_defbarloc): likewise (cmd_defpadding): likewise (cmd_defborder): likewise (cmd_definputwidth): likewise (cmd_defwaitcursor): likewise (cmd_defwinfmt): likewise (cmd_defwinname): likewise (cmd_defbarpadding): likewise (cmd_startup_message): likewise (cmd_rudeness): likewise * src/sbuf.h (sbuf_printf_concat): new prototype (sbuf_printf): likewise * src/sbuf.c (sbuf_printf_concat): new function (sbuf_printf): likewise * src/ratpoison.h: include stdarg.h (xvsprintf): new prototype (xsprintf): likewise * src/main.c (xvsprintf): new function (xsprintf): likewise * src/bar.c: remove include of stdarg.h (marked_message_printf): call xvsprintf. * src/input.c (input_history): new static global (input_num_history_entries): likewise (get_more_input): cycle through the input history. * src/conf.h (INPUT_PREV_HISTORY_KEY): new define (INPUT_PREV_HISTORY_MODIFIER): likewise (INPUT_NEXT_HISTORY_KEY): likewise (INPUT_NEXT_HISTORY_MODIFIER): likewise (INPUT_MAX_HISTORY): likewise * src/input.c (update_input_window): Draw the cursor in the right place. * src/actions.h (cmd_defbarpadding): new prototype * src/actions.c (user_commands): new command entry "defbarpadding" (cmd_defbarpadding): new function * src/data.h (rp_error_msg): new global extern * src/main.c (rp_error_msg): new global variable * src/events.c (get_event): If there is an X11 error message to print, print it. * src/main.c (handler): record the error in rp_error_msg 2001-12-20 shawn * src/manage.c (maximize_transient): always honour the current size of the window. * src/actions.c (cmd_info): print "Transient" if the window is a transient window. 2001-12-18 shawn * src/manage.c (maximize_transient): Fit the transient window inside its frame. 2001-12-11 shawn * src/actions.c (parse_keydesc): Don't mangle the key description argument. 2001-12-11 Ryan C Yeske * contrib/genrpbindings: Add ruby bindings. From Doug Kearns . 2001-12-08 shawn * src/events.c (handle_key): revert the focus immediately after reading the key. * src/list.c (give_window_focus): update rp_current_frame when setting the window focus. * src/main.c (main): scan for windows in a seperate pass after initializing the screen structures. (init_screen): build a display string for each screen. (init_screen): remove the call to scanwins. * src/manage.c (current_screen): return the current screen using rp_current_screen. * src/split.h (init_frame_lists): new function * src/split.c (rp_window_frame_sentinel): remove. (rp_current_frame): remove. (frames_screen): new function (maximize_frame): use the frame's screen to find out the width and height of the display. (create_initial_frame): take a pointer to a screen_info as an argument. (init_frame_lists): new function (init_frame_list): take a pointer to a screen_info as an argument. (find_last_frame): take a pointer to a screen_info as an argument. * src/actions.c (spawn): Set the DISPLAY environment variable to point to the current screen. * src/data.h (struct screen_info): add display_string, rp_window_frame_sentinel, rp_current_frame. (rp_current_screen): new global (rp_current_frame): Remove. Dependant code uses screen_info.rp_current_frame. 2001-12-09 Gergely Nagy * debian/changelog: Lets have a snapshot release * debian/control: Changed Maintainer, and added an Uploaders field * debian/ratpoison.examples: added the files in contrib/ * doc/Makefile.am (EXTRA_DIST): removed ratpoisonrc-mode.el * contrib/Makefile.am (EXTRA_DIST, pkgdata_DATA): added genrpbindigs 2001-12-05 Ryan C Yeske * contrib/genrpbindings: Fix perl typos. From Doug Kearns . 2001-12-04 Ryan C Yeske * contrib/genrpbindings: New file. * src/actions.c (user_commands): Add markup for genrpbindings. (cmd_getenv): New function. 2001-10-18 shawn * src/split.c (show_frame_indicator): call XSync after clearing the window. * src/input.c (get_more_input): clear the window after it is raised. Call XSync aftwards. * src/conf.h (MAX_LINK_DEPTH): new define * src/bar.c (marked_message): clear the window after it is raised. Call XSync aftwards. * src/actions.h (cmd_link): new prototype * src/actions.c (user_command): new command 'link' (find_command_by_keydesc): new function (resolve_command_from_keydesc): likewise (cmd_link): likewise * src/split.h (find_last_frame): new prototype * src/split.c (update_last_access): new function (find_last_frame): likewise (split_frame): update the new frame's last_access field (set_active_frame): update the new current frame's last_access field * src/input.h (x11_mask_to_rp_mask): new prototype (rp_mask_to_x11_mask): likewise * src/input.c (x11_mask_to_rp_mask): new function (rp_mask_to_x11_mask): likewise * src/events.c (handle_key): convert X11 modifier masks to rp modifier masks where appropriate. * src/actions.h (cmd_focuslast): new prototype * src/actions.c (initialize_default_keybindings): new keybinding for "focuslast" (cmd_focuslast): new function (user_command): new command "focuslast" * src/data.h (struct rp_window_frame): new field 'last_access' (RP_CONTROL_MASK): new define. All code depending on the X11 modifier mask equivalent has been changed to use this where appropriate. (RP_META_MASK): likewise (RP_ALT_MASK): likewise (RP_SUPER_MASK): likewise (RP_HYPER_MASK): likewise 2001-10-11 shawn * src/bar.c (show_last_message): abort if there was no last message. * src/events.c (configure_request): Always check the rudeness level before honouring a raise request. 2001-10-09 shawn * src/split.c (remove_frame): Make sure the frame attempting to take up the space of the deleted frame overlaps the deleted frame after the size change. (remove_frame): More debug messages * src/list.c (format_window_name): add formatting option '%l' to grab the last_access field from the window. 2001-10-05 Gergely Nagy * contrib/ratpoisonrc-mode.el: superceded by.. * contrib/ratpoison.el: ..this one, now with AllYou'llEverNeed(tm) 2001-10-01 shawn * src/bar.c (marked_message_printf): Handle a return value from vsnprintf of -1 properly. 2001-09-27 shawn * src/main.c[ratpoison_opts]: remove 'r' and 'k'. 2001-09-23 shawn * src/actions.c (initialize_default_keybindings): Change C-t a and C-t C-a binding to "time". 2001-09-21 shawn * src/split.h (find_frame_up): new prototype (find_frame_down): likewise (find_frame_left): likewise (find_frame_right): likewise * src/split.c (find_frame_up): new function (find_frame_down): likewise (find_frame_left): likewise (find_frame_right): likewise * src/manage.c (move_window): use x11 gravity constants to denote gravity. * src/main.c (ratpoison_longopts): remove --kill and --restart. Dependant code updated. (init_defaults): use x11 gravity constants to denote gravity. (main): only display the startup message if defaults.startup_message is on. * src/list.c (update_window_gravity): rename from update_window_position. dependant code updated * src/events.c (client_msg): don't test for restart or kill client messages. (client_msg): properly handle iconify requests. (get_event): kill and restart the process here. * src/data.h (TOP_LEFT): remove define (TOP_CENTER): likewise (TOP_RIGHT): likewise (CENTER_LEFT): likewise (CENTER_CENTER): likewise (CENTER_RIGHT): likewise (BOTTOM_LEFT): likewise (BOTTOM_CENTER): likewise (BOTTOM_RIGHT): likewise (struct rp_window): rename field to position to gravity. (struct rp_defaults): rename win_pos to win_gravity, trans_pos to trans_gravity and maxsize_pos to maxsize_gravity. (rp_restart): remove global variable (rp_kill): likewise * src/communications.h (send_kill): remove prototype (send_restart): likewise * src/communications.c (send_restart): remove function. obsolete. (send_kill): likewise * src/bar.c (bar_x): Use X11 gravity constants to denote location. (bar_y): likewise * src/actions.h (cmd_focusup): new prototype (cmd_focusdown): likewise (cmd_focusleft): likewise (cmd_focusright): likewise (cmd_startup_message): likewise (cmd_restart): likewise * src/actions.c (cmd_quit): just set the kill_signalled variable. (parse_wingravity): use compass directions to describe the gravity (parse_wingravity): renamed from parse_winpos. dependant code updated. (cmd_gravity): renamed from cmd_pos. dependant code updated. (cmd_defwingravity): renamed from cmd_defwinpos. dependant code updated. (cmd_deftransgravity): renamed from cmd_deftranspos. dependant code updated. (cmd_defmaxsizegravity): renamed from cmd_defmaxsizepos. dependant code updated. (cmd_focusup): new function (cmd_focusdown): likewise (cmd_focusleft): likewise (cmd_focusright): likewise (cmd_restart): likewise (cmd_startup_message): likewise (user_commands): new commands "focusup" "focusdown" "focusright" "focusleft" "startup_message" "restart". 2001-09-18 shawn * src/list.c (window_name): make sure the default window name is not NULL. In this case return win's user_name field which is never NULL. 2001-09-18 shawn * src/actions.c(user_commands)[0]: remove "lastmsg" from the list. (cmd_defwinpos): abort if data is NULL (cmd_deftranspos): likewise (cmd_defmaxsizepos): likewise (cmd_defmaxsizepos): Use the correct command name in call to message. (cmd_deftranspos): likewise (cmd_defwinpos): likewise * src/actions.h (cmd_info): new prototype (cmd_lastmsg): likewise * src/bar.h (show_last_message): new prototype * src/bar.c: new static globals last_msg, lash_mark_start, and last_mark_end. (marked_message): Store the message in last_msg. (show_last_message): new function * src/actions.c (cmd_info): new function (cmd_lastmsg): likewise (user_commands): new commands "info" and "lastmsg" (initialize_default_keybindings): Add key bindings for "info" and "lastmsg". 2001-09-17 shawn * src/actions.h (cmd_unsetenv): new prototype * src/actions.c (cmd_unsetenv): new function (user_commands): new "unsetenv" command * src/ratpoison.h (xstrdup): new prototype * src/main.c (xstrdup): new function. All calls to strdup replaced with calls to xstrdup. (main): Keep a list of all commands pasted in through the -c command-line option. (main): execute all commands pasted in through the -c command-line option. * src/actions.h (cmd_chdir): new prototype * src/actions.c (cmd_clock): rename to cmd_time. Dependant code updated. (user_commands): rename "clock" command to "time". (cmd_chdir): new function (user_commands): new command "chdir". 2001-09-16 shawn * src/actions.c (update_all_gcs): new function (cmd_deffont): update the graphics contexts. * src/list.c (format_window_name): Use 2 character escape codes, like printf. Dependant code updated. * configure.in: check for setpgrp. * src/actions.c (spawn): Only call setsid if it exists. (spawn): Only call setpgid if it exists. (spawn): if setpgid doesn't exist, try setpgrp. * configure.in: check for setsid and setpgid functions. Add contrib/Makefile to AC_OUTPUT. * Makefile.am (SUBDIRS): add contrib 2001-09-14 shawn * src/actions.c (spawn): set the process group ID and session ID for the spawned process. 2001-09-13 shawn * src/actions.c (command): Gobble the whitespace between the command and the argument list. Code that did this in specific commands has been removed. (cmd_setenv): new function (cmd_meta): rename from cmd_generate. All dependant code updated. (cmd_redisplay): rename from cmd_maximize. All dependant code updated. (initialize_default_keybindings): bind "redisplay" to C-t l and C-t c-l. (cmd_msgwait): rename from cmd_defbartimeout. All dependant code updated. * src/input.c (update_input_window): Draw a cheap-o cursor 2001-09-12 Gergely Nagy * src/actions.c (cmd_bind): binding an empty string to a key will unbind the key. 2001-09-09 shawn * src/conf.h (MAXSIZE_WINDOWS_ARE_TRANSIENTS): defined * src/split.c (set_active_frame): give the key_window focus when no window has focus. (blank_frame): give the key_window focus. * src/main.c (init_screen): don't listen for keystrokes on the root window. (main): give the key_window focus in the case that no window has focus. * src/bar.c (marked_message): use the screen_info fg_color and bg_color to create the inverse GC. * src/actions.h (cmd_deffgcolor): new prototype (cmd_defbgcolor): new prototype * src/actions.c (cmd_defbartimeout): merge the 2 ifs. (cmd_defbartimeout): verify that the number is positive. (cmd_defborder): likewise (cmd_defwinname): gobble leading whitespace. Use strings as arguments, not numbers. (cmd_windows): Use the argument as a window format string in non-interactive mode. (cmd_windows): if data is NULL use the default format string. (user_commands): new commands deffgcolor, defbgcolor. (update_gc): new function (cmd_deffgcolor): likewise (cmd_defbgcolor): likewise 2001-09-08 shawn * src/list.h (update_window_position): new prototype (window_name): new prototype (get_window_list): update prototype * src/events.c (grab_rat): Don't wrap in an #ifdef (ungrab_rat): likewise (handle_key): record if the rat is grabbed and only ungrab it at the end if it was first grabbed. * src/actions.h (cmd_pos): new prototype (cmd_defwinpos): new prototype (cmd_deftranspos): new prototype (cmd_defmaxsizepos): new prototype (cmd_defbartimeout): new prototype (cmd_defbarloc): new prototype (cmd_deffont): new prototype (cmd_defpadding): new prototype (cmd_defborder): new prototype (cmd_definputwidth): new prototype (cmd_defwaitcursor): new prototype (cmd_defwinfmt): new prototype (cmd_defwinname): new prototype * src/messages.h (MESSAGE_FRAME_STRING): new message * src/manage.c (get_wmname): renamed from get_window_name (get_class_hints): new function (get_res_name): likewise (get_res_class): likewise (update_window_name): update the window's wm_name, res_name, and res_class fields. (update_window_name): calls functions get_wmname, get_res_name, get_res_class. (update_window_name): Don't crop the window name. (update_window_information): call update_window_position. (move_window): new function (maximize_transient): only set the window's width and height fields. (maximize_normal): likewise (maximize): call move_window (force_maximize): likewise (force_maximize): if the window has resize hints, resize it 1 resize unit. * src/main.c: new global variable, defaults. remove static variable, font, and move to defaults. Dependant code updated. (init_defaults): new function (main): call init_defaults. (init_screen): initialize the screen's fg_color to black and bg_color to white. * src/list.c (free_window): free the fields user_name, res_name, res_class, and wm_name. (update_window_position): new function (window_name): new function. Code accessing a window's name uses this function. All code updated. (add_to_window_list): call update_window_position (add_to_window_list): initialize wm_name, res_name, and res_class for the new window. (format_window_name): new function (get_window_list): Add parameter fmt. All callers updated. (get_window_list): call format_window_name. * src/conf.h: move Configuration variables to the global variable, defaults. Dependant code updated. * src/data.h (TOP_LEFT): new define (TOP_CENTER): likewise (TOP_RIGHT): likewise (CENTER_LEFT): likewise (CENTER_CENTER): likewise (CENTER_RIGHT): likewise (BOTTOM_LEFT): likewise (BOTTOM_CENTER): likewise (BOTTOM_RIGHT): likewise (struct rp_window): new fields user_name, wm_name, res_name, res_class, position. (struct rp_window): remove field name. Replaced with user_name. Dependant code updated. (struct screen_info): remove field font. dependant code updated. (struct screen_info): new fields fg_color, bg_color. (struct rp_defaults): new struct (defaults): new global * src/actions.c (parse_winpos): new function (cmd_pos): likewise (cmd_defwinpos): likewise (cmd_deftranspos): likewise (cmd_defmaxsizepos): likewise (cmd_defbartimeout): likewise (cmd_defbarloc): likewise (cmd_deffont): likewise (cmd_defpadding): likewise (cmd_defborder): likewise (cmd_definputwidth): likewise (cmd_defwaitcursor): likewise (cmd_defwinfmt): likewise (cmd_defwinname): likewise (user_commands): New commands defbarloc, defbartimeout, defborder, deffont, defintputwidth, defmaxsizepos, defpadding, deftranspos, defwaitcursor, defwinfmt, defwinname, defwinpos. 2001-09-06 shawn * configure.in: Use AC_CHECK_FUNCS to check for getopt and getopt_long. 2001-09-06 Gergely Nagy * doc/ratpoison-mode.el: major mode for editing .ratpoisonrc files * doc/Makefile.am (EXTRA_DIST): added ratpoison-mode.el * debian/changelog: Updated to version 1.0.0 * doc/sample.ratpoisonrc: change escape ^a to escape C-a, to reflect the new key naming scheme * ratpoison.spec: bring it up to date, and add %doc stuff 2001-09-06 shawn * src/manage.c (grab_prefix_key): call grab_key. (ungrab_prefix_key): use AnyModifier as the modifier mask param to XUngrabKey. * src/input.h (grab_key): new protoype * src/input.c (update_modifier_map): find the numlock and scroll lock modifiers. (grab_key): new function (cook_keycode): new param ignore_mad_mods. protoype updated. all callers updated. (cook_keycode): ignore caps lock, numlock and scroll lock modifiers when ignore_bad_mods param is non-zero. * src/events.c (key_press): ignore numlock, scroll lock, and caps lock modifiers when cooking the prefix key. * src/data.h (struct modifier_info): new fields num_lock_mask, scroll_lock_mask. 2001-09-05 shawn * src/main.c (show_welcome_message): If the help key is bound to ? then print ? instead of `question'. * configure.in: check for getopt and getopt_long. * src/getopt.c: wrap the whole file in an #ifndef HAVE_GETOPT_LONG * src/getopt1.c: wrap the whole file in an #ifndef HAVE_GETOPT_LONG * src/messages.h (MESSAGE_WELCOME): The help keystroke is not hardcoded. * src/main.c (show_welcome_message): new function (main): call show_welcome_message to show the welcome message. * src/actions.h (find_keybinding_by_action): new prototype * src/actions.c (key_actions): change to a static variable. (key_actions_last): likewise (key_actions_table_size): likewise (find_keybinding_by_action): new function 2001-09-04 shawn * src/actions.h (cmd_unbind): new prototype * src/actions.c (find_keybinding): Change the first parameter's type to KeySym. Prototype updated. (add_keybinding): likewise (remove_keybinding): new function. (key_actions): new command 'unbind'. (key_actions): #if out the unimplemented bindings. (cmd_bind): Error messages are more accurate. (cmd_unbind): new function. (cmd_escape): update the "other" command before the "generate" command. (cmd_escape): When searching for the "other" and "generate" commands' keystrokes, verify that the located action is the right command. 2001-08-31 Shawn * src/split.c (set_active_frame): Only show the frame indicator when switching to a new frame and when there is more than 1 frame. * src/actions.c (cmd_next_frame): display MESSAGE_NO_OTHER_FRAME when there is only 1 frame. * src/messages.h (MESSAGE_NO_OTHER_FRAME): new message * src/split.c (hide_frame_indicator): always hide the frame indicator. (blank_frame): don't show the frame indicator. * src/manage.c (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: win are centered properly in the frame. 2001-08-29 Shawn * src/manage.c (unhide_window): always raise the window. 2001-08-27 Shawn * src/actions.c (cmd_clock): pad the time with spaces on either side. * src/manage.c (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: use maxx, maxy not the window's width and height. * src/events.c (handle_key): use marked_message_printf to notify user of an unbound key. * src/messages.h (MESSAGE_RAISE_TRANSIENT): new message (MESSAGE_RAISE_WINDOW): likewise (MESSAGE_MAP_TRANSIENT): likewise (MESSAGE_MAP_WINDOW): likewise * src/manage.c (update_window_information): update the transient-ness of the window. (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: center the window. (map_window): use the appropriate define in messages.h to notify the user about the new window. * src/list.h: remove prototypes unhide_transient_for, is_transient_ancestor, hide_transient_for, hide_transient_for_between from compilation. * src/list.c (unhide_transient_for): remove from compilation (hide_transient_for_between): likewise (hide_transient_for): likewise (is_transient_ancestor): likewise (set_active_window)[[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: Don't hide the other windows if the window has a max size hint. (print_window_information): use marked_message_printf * src/events.c (cleanup_frame): restructure (cleanup_frame)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: Don't hide the other windows if the window has a max size hint. (unmap_notify): don't try to locate the event's screen. (unmap_notify): if the window wasn't found, return immediately. (map_request): restructure. reword debugging output (map_request): use the appropriate define in messages.h to notify the user about window raise requests. (configure_request): likewise (property_notify): Handle the transient_for notify. * src/conf.h (MAXSIZE_WINDOWS_ARE_TRANSIENTS): new customization * src/bar.c (show_bar): map and raise the window (marked_message): likewise (marked_message): crop the mark_end and mark_start to the boundaries of the message. (marked_message): calculate the end of the marked part of the message correctly. * src/actions.c (cmd_delete): use PRINT_DEBUG for debug messages. (command): use marked_message_printf (cmd_echo): likewise (cmd_rudeness): pad messages with spaces. 2001-08-26 Shawn * src/events.c (configure_request): make sure the window is iconic before notifying a raise request. * src/split.c (num_frames): uncomment. (set_active_frame): only show the frame indicator if, in addition, there are more than 1 frames. (set_active_frame): give the root window focus if there is no current window. (blank_frame): only show the frame indicator if, in addition, there are more than 1 frames. 2001-08-24 Shawn * src/input.c (get_more_input): detect and handle a user abort key sequence. * src/conf.h (INPUT_ABORT_KEY): new define (INPUT_ABORT_MODIFIER): likewise * src/actions.c (cmd_select): handle a user abort. (cmd_rename): likewise (cmd_colon): likewise (cmd_exec): likewise (cmd_newwm): likewise 2001-08-23 Shawn * src/manage.c (maximize_normal): In the new height on windows with increment hints code, reorder the steps. (map_window): conditionally map the window based on the rudeness level. * src/main.c (rp_honour_transient_raise): new global declaration (rp_honour_transient_map): likewise (rp_honour_normal_raise): likewise (rp_honour_normal_map): likewise * src/events.c (map_request): conditionally map the window based on the rudeness level. (configure_request): conditionally raise the window based on the rudeness level. (configure_request): only maximize the window if the height, width, border, or position was changed. * src/data.h (rp_honour_transient_raise): new global (rp_honour_normal_raise): likewise (rp_honour_transient_map): likewise (rp_honour_normal_map): likewise * src/bar.h (marked_message_printf): new prototype * src/bar.c: include stdarg.h (marked_message_printf): new function * src/actions.h (cmd_rudeness): new prototype * src/actions.c (user_commands): new command 'rudeness' (cmd_rudeness): new function 2001-08-22 Shawn * src/split.h (set_frames_window): new prototype (maximize_all_windows_in_frame): likewise * src/split.c (set_frames_window): new function. all code setting a frame's window updated to use this function. (maximize_all_windows_in_frame): new function (find_window_for_frame): don't include windows that are mapped in another frame (not necessarily the frames active window). (split_frame): maximize all windows in the existing frame, not just the active one. (split_frame): comment out unhiding transient window code. (remove_all_splits): hide all mapped windows not in the current frame. (remove_all_splits): maximize all windows mapped in the current frame. (remove_all_splits): comment out hiding transient window code. (remove_frame): when a frame's size has been changed, maximize all windows in that frame. (remove_frame): hide all windows in the frame being removed. * src/manage.h (hide_others): new prototype * src/manage.c (hide_window): set win's frame to NULL. (unhide_window_below): renamed frame unhide_below_window. All callers updated. (hide_others): new function * src/list.c (set_active_window): comment out hiding transient window code. * src/events.c (cleanup_frame): comment out hiding transient window code. * src/data.h (struct rp_window): new field 'frame'. * src/actions.c (cmd_help): initialize old_i to 0 * src/list.c (set_active_window): Don't hide last_win's transient_for windows if last_win and win share the same transient_for window. * src/events.c (cleanup_frame): Don't hide last_win's transient_for windows if last_win and win share the same transient_for window. 2001-08-20 Shawn * src/events.c (cleanup_frame): set the new window's frame before maximizing it. 2001-08-19 Shawn * src/events.c (cleanup_frame): unhide the new active window before hiding the last window * src/list.c (set_active_window): unhide the new active window before hiding the last window. 2001-08-18 Shawn * src/actions.c (cmd_bind): Gobble whitespace between keystroke and command. (cmd_help): keystrokes and commands no longer overlap. * src/events.c (configure_request): grant Iconized and Withdrawn windows any geometry they like. * src/list.c (is_transient_ancestor): make sure tmp is a valid pointer before testing if it is a transient. * src/main.c (read_rc_file): free the command's result string. * src/list.h (get_window_list): new prototype * src/list.c (get_window_list): new function * src/events.c (handle_key): free the command's result string. (receive_command): send the command's result string if there is one, otherwise send NULL. * src/communications.c (recieve_command_result): only print the result if the string is not empty. * src/bar.c (update_window_names): calls get_window_list. * src/actions.c (cmd_windows): return a list of the windows when called non-interactively. (cmd_colon): free the command result. * src/actions.c: command functions have been changed to return a result string and take a parameter that tells the function if it was called interactively or not. All callers updated. * src/split.c (split_frame): unhide transient_for windows as well as the active window. (remove_all_splits): hide transient_for windows as well as the frame's active window. * src/manage.c (unhide_below_window): always lower the window * src/list.h (hide_transient_for_between): new prototype (is_transient_ancestor): likewise * src/list.c (hide_transient_for_between): new function (hide_transient_for): calls hide_transient_for_between (is_transient_ancestor): new function (set_active_window): don't temporarily hide windows that the newly active window is a transient for (removes unnecessary flicker). * src/events.c (cleanup_frame): don't temporarily hide windows that the new window is a transient for (removes unnecessary flicker). 2001-08-07 Ryan Yeske * doc/ratpoison.texi: Fix spelling and grammar. 2001-06-29 Gergely Nagy <8@free.bsd.hu> * Makefile.am: do not include debian/ in the tarball * configure.in: better xterm checking, fixes #430631 2001-06-11 shawn * src/events.c (grab_rat): wrap in ifdef (ungrab_rat): likewise (handle_key): only change the mouse icon if USE_WAITFORKEY_CURSOR is defined. * src/conf.h (USE_WAITFORKEY_CURSOR): new define 2001-06-10 shawn * src/actions.c (cmd_generate): return if there is no current window. * src/split.c (split_frame): empty frames can be split. * src/main.c (rp_rat_bits): remove (rp_rat_mask_bits): remove include (sighandler): only increment kill_signalled (hup_handler): only increment hup_signalled (alrm_handler): only increment alarm_signalled (read_startup_files): use PRINT_ERROR for error messages. (init_rat_cursor): Use a standard X cursor for the screen's rat. * src/events.h (unmap_notify): remove prototype (delegate_event): likewise (key_press): likewise (keymapstate): likewise (map_request): likewise * src/events.c: includes and (new_window): static function (unmap_notify): likewise (map_request): likewise (destroy_window): likewise (configure_notify): likewise (configure_request): likewise (key_press): likewise (property_notify): likewise (colormap_notify): likewise (delegate_event): likewise (get_event): new function (more_destroy_events): remove function (handle_events): call get_event. * src/data.h: rp_current_event is an XEvent dependant code updated. new globals alarm_signalled, kill_signalled, hup_signalled. * src/actions.c (initialize_default_keybindings): new bindings for "split" and "vsplit". 2001-06-06 Shawn Betts * src/list.c (unhide_transient_for): abort if the transient_for window can't be found. (hide_transient_for): likewise 2001-06-01 Shawn Betts * src/events.c (map_request): If the window is iconified call set_active_window on it. 2001-06-05 shawn * src/list.c (set_active_window): calls give_window_focus which was accidentally removed. * src/actions.c (parse_keydesc): return NULL if the keydesc is a '-'. * src/manage.c (hide_window): ignore only StructureNotify events. * src/data.h (WIN_EVENTS): Add StructureNotifyMask. * src/events.c (unmap_notify): ignore SubstructureNotify unmaps. 2001-06-02 shawn * src/split.c (blank_frame): hide transient's transient_for. * src/manage.c (unhide_below_window): new function * src/manage.h (unhide_below_window): new prototype * src/list.h (unhide_transient_for): new prototype (hide_transient_for): likewise * src/list.c (unhide_transient_for): new function (hide_transient_for): likewise (set_active_window): print the name of the last and new windows. (set_active_window): unhide new window's transient_for. hide old window's transient_for. * src/events.c (cleanup_frame): hide any transients for the old window and unhide any transients for the new one. * src/manage.c (hide_window): ignore unmap_notify events when unmapping the window. * src/list.c (add_to_window_list): use WIN_EVENTS in XSelectInput. * src/data.h (struct rp_window): remove iconizing field. remove code using iconizing. (WIN_EVENTS): new define 2001-06-01 shawn * src/events.c (cleanup_frame): hide the frame's window's transient_for windows. 2001-05-24 Shawn Betts * src/events.c (colormap_notify): ignore badwindows when retrieving and installing the colormap. * src/manage.c (withdraw_window): ignore badwindows during all Xlib calls. 2001-05-22 Shawn Betts * src/actions.c (cmd_generate): only generate the event if there is a current window. 2001-05-18 Shawn Betts * src/input.c (update_modifier_map): rename from init_modifier_map. all callers updated. prototype updated. * src/events.c (mapping_notify): new function (delegate_event): handle MappingNotify events. 2001-05-09 Gergely Nagy <8@free.bsd.hu> * ratpoison.spec: spec file for rpm-based systems 2001-05-03 Gergely Nagy <8@free.bsd.hu> * debian/control: adjust build-depends to potato * debian/rules: fixed, so it works under both potato and woody/sid 2001-04-19 Shawn Betts * src/manage.c (unhide_window): map and raise the window. 2001-04-18 shawn * src/input.c (keysym_to_string): handles control, meta, alt, hyper, and super modifiers. Returns full keysym names. * src/actions.c (parse_keydesc): parses control, meta, alt, hyper, and super modifiers. (cmd_clock): sets the last character in msg to 0. 2001-04-15 shawn * src/split.c (show_frame_indicator): contents of update_frame_indicator merged into here. (update_frame_indicator): remove function * src/number.h (add_window_number): new prototype * src/number.c (add_window_number): renamed from add_to_list. Dependant code updated. * src/messages.h (MESSAGE_WINDOW_INFORMATION): new define * src/list.h (print_window_information): new prototype * src/list.c (print_window_information): new function * src/actions.h (cmd_number): new prototype * src/actions.c (cmd_clock): remove newline from date string. (cmd_rename): passes current_screen() to update_window_names. (cmd_number): new function * src/messages.h (MESSAGE_WELCOME): new define * src/manage.c (scanwins): ignore the help window (hide_window): increment window's iconizing variable * src/main.c (main): display welcoming message (init_screen): create the help window (init_screen): don't map the frame indicator window (clean_up): destroy the help window * src/list.c (add_to_window_list): initialize iconizing to 0 * src/events.c (new_window): skip help_window (unmap_notify): skip normal processing if the event is from iconizing the window. (unmap_notify): clean up the window's frame if it is being withdrawn. * src/data.h (struct screen_info): new variable help_window * src/bar.c (update_window_names): only print the window list if the bar is already displaying the window list. * src/actions.h (cmd_help): new prototype (cmd_quit): likewise * src/actions.c (initialize_default_keybindings): new keybinding for "help" (cmd_quit): new function (cmd_help): likewise 2001-04-13 shawn * src/actions.c (cmd_clock): doesn't allocate memory. displays the date. * src/split.h (blank_frame): new prototype * src/split.c (split_frame): calls unhide_window after maximizing the new frame's window. (remove_all_splits): hide all windows but the current one (remove_all_splits): maximize the current window in its newly resized frame. (remove_frame): hide the frame's window after removing it from the list. (blank_frame): new function * src/manage.h (withdraw_window): new prototype (hide_window): likewise (unhide_window): likewise * src/manage.c (scanwins): glob ignored windows into 1 if statement. (scanwins): set the window's state to NormalState before calling map_window. (set_state): sets win->state (map_window): calls set_state (hide_window): new function (unhide_window): likewise (withdraw_window): new function * src/main.c (main): setup error handlers after --command, --restart, and --kill commands have been processed. (main): doesn't call set_active_window (init_screen): XSync's after selecting ewents on the root window. (clean_up): map iconized windows * src/list.h (give_window_focus): prototype updated * src/list.c (give_window_focus): takes a second argument, last_win. (give_window_focus): calls unhide_window (give_window_focus): uses last_win instead of current_window() (set_active_window): hides the last window and unhides the new window. (set_active_window): calls give_window_focus * src/events.c (cleanup_frame): maximizes the frame's new window (unmap_notify): do nothing if the window is in the iconic state. Withdraw the window if it is in the normal state. (map_request): calls unhide_window if the window is iconized. Do nothing if it is already mapped. (destroy_window): tightened up (client_msg): detects iconize requests from clients. * src/data.h (STATE_UNMAPPED): remove. Dependant code uses WithdawnState in its stead. (STATE_MAPPED): likewise. Dependant code uses NormalState in its stead * src/actions.c (initialize_default_keybindings): new keybinding - bound to "select -" (cmd_select): the string "-" selects a blank window 2001-04-12 shawn * src/main.c (main): calls XCloseDisplay before exitting after sending a kill, restart, or command message. 2001-04-10 Gergely Nagy * src/main.c (main): initialize command to NULL, silences an annoying warning * debian/rules: sync it up a bit, so it works with both the current CVS ratpoison * debian/ratpoison.examples: new file listing examples installed to /usr/share/doc/ratpoison/examples 2001-04-08 shawn * src/main.c (clean_up): destroys resources stored in screens (init_rat_cursor): frees the pixmaps 2001-04-06 shawn * src/split.h (hide_frame_indicator): new prototype (show_frame_indicator): likewise * src/split.c: include (split_frame): set the new_frame's window to NULL (split_frame): calls show_frame_indicator once the split is done. (set_active_frame): only call show_frame_indicator if the frame has no window or if we switched to a different frame. (update_frame_indicator): prints FRAME_STRING in the frame indicator window. (hide_frame_indicator): new function (show_frame_indicator): likewise * src/main.c (rp_rat_bits): new variable (rp_rat_mask_bits): likewise (alrm_handler): calls hide_frame_indicator (init_rat_cursor): new function (init_screen): calls init_rat_cursor * src/events.c (unmap_notify): calls set_active_frame if the window being unmapped was in the current frame (destroy_window): calls set_active_frame if the window being destroyed was in the current frame (grab_rat): new function (grab_rat): likewise (handle_key): calls grab_rat and ungrab_rat * src/data.h (struct screen_info): new variable rat * src/conf.h (FRAME_INDICATOR_TIMEOUT): new #define (FRAME_STRING): likewise (RAT_HEIGHT): likewise (RAT_WIDTH): likewise (RAT_HOT_X): likewise (RAT_HOT_Y): likewise * src/actions.h (cmd_curframe): new prototype * src/actions.c (initialize_default_keybindings): new key binds for "curframe" (user_commands): new command "curframe" (cmd_curframe): new function * src/split.c (remove_all_splits): only maximize the current window if there is one. (maximize_frame): remove unused code to retrieve the current screen_info. * src/actions.c (cmd_h_split): calls h_split_frame on the current frame. (cmd_v_split): likewise (cmd_only): even if the current frame is empty, call remove_all_splits. * src/split.c (maximize_frame): new function (create_initial_frame): calls maximize_frame to fill in the initial frame's fields. (num_frames): comment out (remove_frame): remove special case when there is only 1 frame left. * src/split.h (h_split_frame): renamed frome h_split_window (v_split_frame): renamed frome v_split_window (split_frame): renamed frome split_window (remove_all_splits): renamed frome remove_all_frames (find_windows_frame): new prototype (find_frame_next): likewise (find_frame_prev): likewise (current_window): likewise (init_frame_list): likewise (set_active_frame): likewise * src/split.c (create_initial_frame): new function (init_frame_list): likewise (find_windows_frame): likewise (find_frame_next): likewise (find_frame_prev): likewise (current_window): likewise (update_frame_indicator): likewise (set_active_frame): likewise (split_frame): rename from split_window (v_split_frame): rename from v_split_window (h_split_frame): rename from h_split_window (remove_all_splits): renamed frome remove_all_frames (total_frame_area): traverses rp_window_frame list (num_frames): likewise (frame_overlaps): likewise (remove_frame): likewise (remove_frame): calls delete_frame_from_list * src/manage.c (scanwins): skips the frame_window (maximize_transient): finds the window's frame (maximize_normal): likewise * src/main.c (main): calls init_frame_list (init_screen): create and map the frame_window * src/list.c (give_window_focus): new function (goto_window): likewise (set_active_window): calls give_window_focus * src/list.h (give_window_focus): new prototype (goto_window): likewise * src/events.c (new_window): the screen's frame_window is not managed (cleanup_frame): new function (unmap_notify): calls cleanup_frame if window exists in a frame (destroy_window): likewise * src/data.h (struct screen_info): remove frame field (struct rp_window_frame): new fields win, prev, next (rp_window_frame_sentinel): new global * src/actions.c (cmd_prev): jumps to last accessed window if current frame is empty. (cmd_next): likewise (cmd_remove): nothing is done if only 1 frame exists * src/data.h (struct screen_info): new field frame_window (rp_current_frame): new global (rp_current_window): removed. All dependant code updated. 2001-04-04 Ryan Yeske * src/actions.c: add :banish to user_commands. (initialize_default_keybindings): Add keybinding for :banish. (cmd_banish): New function. 2001-04-01 shawn * src/manage.c (maximize_normal): fixed maximizing problems for windows with resize hints. (maximize_transient): likewise 2001-03-31 shawn * src/split.h (find_window_for_frame): new function prototype (find_window_for_frame): likewise (find_window_for_frame): likewise (find_window_for_frame): likewise (find_window_for_frame): likewise * src/split.c (window_fits_in_frame): new function (find_window_for_frame): likewise (split_window): likewise (v_split_window): likewise (h_split_window): likewise (remove_all_frames): likewise (frame_is_below): likewise (frame_is_above): likewise (frame_is_left): likewise (frame_is_right): likewise (total_frame_area): likewise (num_frames): likewise (frames_overlap): likewise (frame_overlaps): likewise (remove_frame): likewise * src/ratpoison.h: includes "split.h" * src/manage.c (unmanage): calls free_window (maximize_transient): takes the window's frame into account (maximize_normal): likewise * src/list.h (find_window_prev_with_frame): new function prototype (find_window_next_with_frame): likewise (free_window): likewise * src/list.c (free_window): new function (add_to_window_list): initialize new window's frame to NULL. (find_window_prev): skips windows with frames (find_window_next): likewise (find_window_other): likewise (find_window_prev_with_frame): new function (find_window_next_with_frame): new function (set_active_window): returns if the specified window is already the current window. (set_active_window): If the new window has no frame it inherits the current window's frame. (set_active_window): maximize and raise the newly active window. * src/events.c (unmap_notify): handles window frames. (destroy_window): simplified * src/data.h (struct rp_window_frame): new struct (struct rp_window): add frame variable * src/conf.h (WINDOW_BORDER_WIDTH): set to 1 * src/actions.h (cmd_next_frame): new function prototype (cmd_prev_frame): likewise (cmd_h_split): likewise (cmd_v_split): likewise (cmd_only): likewise (cmd_remove): likewise * src/actions.c (initialize_default_keybindings): new default bindings for "split", "vsplit", "focus", "only", "remove" (user_commands): new user commands "split", "vsplit", "focus", "only", "remove" (cmd_prev_frame): new function (cmd_next_frame): likewise (cmd_h_split): likewise (cmd_v_split): likewise (cmd_only): likewise (cmd_remove): likewise * src/Makefile.am (ratpoison_SOURCES): new files split.c split.h 2001-03-31 Ryan Yeske * doc/ipaq.ratpoisonrc: Use keysym names. 2001-03-28 Shawn * src/main.c (main): initialize rp_command_request and rp_command_result. * src/data.h (rp_command_request): new global (rp_command_result): new global * src/events.c (execute_remote_command): new function (receive_command): loops through the list of command requests calling execute_remote_command on each one. (property_notify): better detection of command requests. * src/communications.c (recieve_command_result): new function (send_command): creates a new window to attach the command to. Waits for confirmation that the command has been executed. * src/actions.h (cmd_echo): new prototype * src/actions.c (cmd_echo): new function (user_commands): update "echo" entry 2001-03-22 Gergely Nagy <8@free.bsd.hu> * debian/control: removed build-dependency on x-terminal-emulator, downgraded xterm | x-terminal-emulator dependency to a recommends only 2001-03-19 shawn * src/main.c (ratpoison_longopts): add --command to recognized command-line options. * src/communications.h (send_command): new function prototype * src/data.h (rp_command): new global variable * src/events.c (receive_command): new function (property_notify): handles rp_command Atoms * src/communications.c (send_command): new function * src/main.c (print_help): prints help for --command (main): handles --command command-line option 2001-03-14 shawn * src/events.c (delegate_event): calls focus_change on FocusOut and FocusIn events. (focus_change): new function * src/list.c (add_to_window_list): add FocusChangeMask to the window's event mask. 2001-03-13 shawn * configure.in: warn the user if the x terminal emulator cannot be found. * src/conf.h: replaced the silly c++ style comment around HIDE_MOUSE with a REAL comment. * src/manage.c (update_window_information): updates the window's border width. * src/conf.h (WINDOW_BORDER_WIDTH): new constant * src/manage.c (maximize_normal): Set the border width to WINDOW_BORDER_WIDTH. takes the border width into account when calculating the position, width, and height. (maximize_transient): likewise (maximize): calls XSetWindowBorderWidth to set the window's border width. (force_maximize): likewise 2001-03-07 shawn * doc/Makefile.am (EXTRA_DIST): Added sample.ratpoisonrc and ipaq.ratpoisonrc 2001-03-07 Ryan Yeske * doc/ipaq.ratpoisonrc: New file. 2001-03-07 Ryan Yeske * src/actions.c (string_to_keysym): New function. (parse_keydesc): Call string_to_keysym. * src/main.c (read_startup_files): Use PRINT_DEBUG to report failure to load rc files. * src/main.c (read_rc_file): Check for comment character '#' in first column. (read_rc_file): Fix typo that was resulting in exhausting virtual memory when parsing rc files. 2001-03-06 shawn * src/input.c (init_modifier_map): rp_modifier_info masks are or'd with existing value. (init_modifier_map): Resolves alt-meta conficts just like emacs. (cook_keycode): returns a KeySym string. Updated Dependant code. (read_key): likewise (get_more_input): copies the KeySym string passed back from read_key into the input buffer. * src/data.h (struct modifier_info): commented out mode_switch_mask. Dependant code commented out. * src/actions.c (cmd_select): the search is not carried out on empty strings. * src/events.c (configure_request): Handles restacking requests. * src/main.c: removed rp_mode_switch and rp_numlock. Added rp_modifier_info global. (main): calls init_modifier_map. (init_screen): windows no longer select on KeyRelease and KeymapState events. * src/input.h (init_modifier_map): new prototype * src/input.c (init_modifier_map): new function (cook_keycode): uses rp_modifier_info to get Mode_switch modifier mask. (read_key): only listens for key presses. * src/events.c (keymap_state): removed function (key_release): likewise (delegate_event): removed case for KeymapNotify. * src/data.h (struct modifier_info): added mode_switch_mask, removed shift_lock_mask. removed rp_mode_switch, and rp_numlock. dependant code updated. 2001-03-05 shawn * configure.in: bumped version to 0.1.1-cvs 2001-03-05 Ryan Yeske * src/actions.c: remove silly C,M,A,S,H #defines and propagate changes. * src/bar.c (update_window_names): Print a '+' for the last accessed window. 2001-03-05 shawn * src/events.c (key_press): set rp_mode_switch to 0 before processing the key. * src/main.c: new globals rp_mode_switch, rp_numlock. (init_screen): selects on KeyRelease events for the root window, input_window, and key_window. (init_screen): selects on KeymapState events for input_window and key_window. * src/input.c (cook_keycode): Handles Mode_switch (aka AltGr). (read_key): listens for KeyRelease and KeymapState events. (read_key): updates rp_mode_switch status * src/events.h (keymap_state): new prototype * src/events.c (keymap_state): new function (key_release): new function (key_press): uses cook_keycode to get the event's keysym. (key_press): updates rp_mode_switch status (delegate_event): handles KeymapNotify events. * src/data.h (struct modifier_info): new struct new globals rp_mode_switch and rp_numlock. 2001-03-04 shawn * configure.in: bumbped version number to 0.1.0 2001-03-04 Gergely Nagy <8@free.bsd.hu> * debian/changelog: bumped version number to 0.1.0 * debian/rules: fixed clean target, it failed when there was no Makefile * doc/ratpoison.1: some indentitation fixes, removed the note that upstream doesn't have a manpage, because it has 2001-03-03 Ryan Yeske * src/actions.c (cmd_bind): Do not pollute the message bar with chatter about the keybinding. 2001-03-03 shawn * src/manage.c (maximize_normal): windows with resize increments resize properly when their original size is > the screen size. (maximize_transient): likewise 2001-03-02 shawn * configure.in: adds -g to CFLAGS when debugging is turned on. * doc/Makefile.am (EXTRA_DIST): man page comes with the distro. * Makefile.am (SUBDIRS): removed man/ * configure.in (AC_OUTPUT): removed man/Makefile removed references to emacs. * doc/Makefile.am (man_MANS): ratpoison.1 moved to doc/ * doc/ratpoison.texi: minor updates. * man/ratpoison.1: added changes from texinfo docs. 2001-03-02 shawn * src/main.c (print_version): updated copyright notice. * src/actions.c (initialize_default_keybindings): removed emacs binding. 2001-03-01 shawn * doc/ratpoison.texi (Commands): filled in remaining commands and keys. 2001-03-01 Ryan Yeske * src/ratpoison.h (xmalloc, xrealloc, fatal): Prototype. * src/main.c (xmalloc): Move here from sbuf.c. (xrealloc): Likewise. (fatal): Likewise. * src/number.c (find_empty_cell): Use xrealloc, remove error check. (init_numbers): Likewise. * src/manage.c (get_window_name): Likewise. * src/main.c (main): Likewise. * src/list.c (add_to_window_list): Likewise. (add_to_window_list): Likewise. * src/events.c (handle_key): Likewise. * src/input.c (keysym_to_string): Likewise. (get_more_input): Use xrealloc, remove error check. * src/actions.c (cmd_source): Open the file. Error report as appropriate. (cmd_windows): Call current_screen() to find the current screen. (cmd_clock): Show the clock even if no windows are open. (cmd_clock): Use xmalloc, remove error check. (initialize_default_keybindings): Use xmalloc. (cmd_bind): Use xmalloc. (cmd_rename): Use xmalloc, remove error check. (add_keybinding): Use xrealloc. (replace_keybinding): Use xrealloc. * src/main.c (read_rc_file): Take a file pointer rather than a filename. (read_startup_files): If ~/.ratpoisonrc is not readable try /etc/ratpoisonrc. * src/actions.c: Use PRINT_DEBUG instead of fprintf. Put useful error text in calls to message(). (cmd_select): Show the window list if there is no such window number. 2001-02-28 shawn * src/manage.c (map_window): calls update_window_information. * src/manage.h (map_window): new prototype. * src/events.c (new_window): calls update_window_information on new windows. (map_request): calls map_window on managed unmapped windows. (configure_request): removed commented out old crusty code. Updates window's structure based on what bits are set in the event's value_mask. Doesn't honour resize request. Windows are always maximized. (property_notify): doesn't call maximize when WM_NORMAL_HINTS are updated. * src/manage.c (manage): no longer maps the window, this code is in map_window. (map_window): new function (maximize): no longer sends a synthetic configure event. (scanwins): calls map_window on viewable windows. (update_window_information): renamed from manage. dependant code updated. 2001-02-27 shawn * doc/ratpoison.texi (Commands): added escape command 2001-02-27 shawn * src/actions.c (cmd_escape): updates the "other" command keybinding * src/manage.h (ungrab_prefix_key): new prototype (grab_prefix_key): likewise * src/manage.c (ungrab_prefix_key): new function * src/main.c (main): calls initialize_default_keybindings after init_window_list. * src/data.h (struct rp_action): key is of type KeySym. state is unsigned int. * src/conf.h (KEY_PREFIX): set to XK_t * src/actions.h (cmd_escape): new prototype * src/actions.c (cmd_escape): new function * src/data.h (struct key): move from actions.h (struct rp_key): rename from struct key. dependant code updated. (prefix_key): new global variable. code dependant on KEY_PREFIX and MODIFIER_PREFIX updated to use this. * src/actions.c: "maximize" user command calls cmd_maximize (initialize_default_keybindings): initializes prefix_key. Added "escape" command. * src/manage.c (force_maximize): moved from actions.c (maximize): likewise (maximize_normal): likewise (maximize_transient): likewise * src/actions.c (cmd_maximize): New function * src/main.c (handler): Prepends error message with "ERROR: ". Displays error in message bar. Returns 0. * src/events.c (destroy_window): sets rp_current_window to NULL when there are no more mapped windows. (destroy_window): calls set_current_window and find_window_other directly instead of cmd_other. 2001-02-26 shawn * src/list.c (save_mouse_position): stores the mouse position relative to the root window. (set_active_window): warps the mouse relative to the root window. * src/actions.h: prototype for force_maximize added * src/actions.c: the user command "maximize" calls force_maximize (force_maximize): New function 2001-02-25 shawn * configure.in (AC_OUTPUT): added man/Makefile * Makefile.am (SUBDIRS): added man dir 2001-02-25 Ryan Yeske * src/main.c (read_rc_file): rename from load_rc_file. Remove static keyword. (read_startup_files): rename from read_initialization_files. * src/actions.c (cmd_prev): Handle situation when there is no other window. (cmd_next): Likewise. (cmd_other): Likewise. (cmd_source): New function. 2001-02-24 Ryan Yeske * src/main.c (load_rc_file): new function (read_initialization_files): new function (main): read the initialization files * src/conf.h: remove themes support * src/themes.h: remove file * src/actions.c (replace_keybinding): add function (cmd_bind): handle binding of previously bound key 2001-02-23 shawn * src/main.c (main): passes return value of find_window_other() to set_active_window(). * src/list.h (remove_from_window_list): removed prototype (find_window_in_list): new prototype (append_to_list): likewise (insert_into_list): likewise (remove_from_list): likewise * src/list.c: propogated use of rp_unmapped_window_sentinel and rp_mapped_window_sentinel. (find_window_in_list): new function (find_window): calls find_window_in_list to search mapped and unmapped window lists. (remove_from_window_list): removed function (init_window_list): initialized sentinels (find_window_prev): searches only the mapped window list. (find_window_next): likewise (find_window_other): likewise (append_to_list): new function (insert_into_list): new function (remove_from_list): new function * src/events.c (unmap_notify): Searches only the mapped window list. moves the window from the unmapped window list to the mapped window list. * src/data.h: removed rp_window_head and rp_window_tail, updated dependant files. Added rp_mapped_window_sentinel and rp_unmapped_window_sentinel globals. * src/bar.c (update_window_names): loops only through mapped window list. 2001-02-21 Ryan Yeske * configure.in: change version to 0.0.6-cvs 2001-02-21 Ryan Yeske * src/manage.c (manage): comment out broken sort_window_list_by_number call * src/actions.h (key): new structure * src/actions.c (find_keybinding): return an rp_action*, not a char* (user_commands): add bind command (parse_keydesc): new function (cmd_bind): new function * src/actions.h: update find_keybinding prototype * src/events.c (handle_key): handle new return value of find_keybinding * src/actions.c (cmd_generate): Send the modifier prefix state as well as the keycode. (find_keybinding): Do not strdup the key action data. (add_keybinding): Strdup the key action data. 2001-02-19 Ryan Yeske * autogen.sh: Run aclocal before autoheader. 2001-02-19 Ryan Yeske * src/events.c (handle_key): Call find_keybinding() instead of looping through keytable here. * src/main.c (main): Call initialize_default_keybindings. * src/actions.c (find_keybinding): Added. (add_keybinding): Added. (initialize_default_keybindings): Added. Do not use static table of keybindings. Instead call add_keybinding() for each key. * src/Makefile.am (ratpoison_SOURCES): add themes.h * src/main.c (FONT_NAME): Rename to FONT (BAR_BG_COLOR): Rename to BACKGROUND (BAR_FG_COLOR): Rename to FOREGROUND * src/list.c (find_window_by_number): Rename to find_window_number. (find_window_by_name): Rename to find_window_name. (goto_window_name): Remove. (find_window_prev): Clean up. (find_window_next): Clean up. * src/list.h: Update prototypes. * src/conf.h: Include "themes.h". * src/actions.c (cmd_generate): Fix typo. (prev_window): Remove. (next_window): Remove. (last_window): Remove. (cmd_prev): Add. (cmd_next): Add. (cmd_other): Add. (string_to_window_number): Add. (cmd_select): Add. (cmd_rename): Add. (delete_window): Remove. (cmd_delete): Add. (cmd_delete): Remove. (cmd_kill): Add. (show_version): Remove. (cmd_version): Add. (command): Remove. (command): Remove. (cmd_colon): Deal with partial input. (cmd_exec): Add. (cmd_newwm): Remove. (cmd_newwm): Add. (cmd_clock): Remove. (cmd_clock): Add. (cmd_clock): Remove. (cmd_windows): Add. (goto_window_number): Remove. (abort_keypress): Remove. (cmd_abort): Add. * src/actions.c: Make :select command handle numbers. (cmd_unimplemented): new function. Commands are all cmd_ prefixed. Major changes within this file. * src/input.c (get_more_input): New function. Used to collect input on top of some existing input. (get_input): Calls get_more_input to do work. * src/conf.h (THEME): added themes support. * src/bar.h (message): New macro. Calls marked_message with (0, 0) highlight parameters. * src/bar.c (marked_message): New function * src/actions.h: Update prototypes. 2001-02-19 shawn * src/manage.c (manage): calls sort_window_list_by_number * src/list.h (sort_window_list_by_number): Added prototype * src/list.c (swap_list_elements): Added (sort_window_list_by_number): Added * src/input.c (update_input_window): Added (get_input): calls update_input_window in place of xlib calls. (get_input): exits if realloc fails * src/conf.h: Added INPUT_WINDOW_SIZE * src/bar.c (update_window_names): loops through window list from head to tail. 2001-02-18 Gergely Nagy <8@free.bsd.hu> * NEWS: mention that ALL of the fixed size buffers are fixed. 2001-02-18 shawn * src/conf.h: restructured comments. Added #define for AUTO_CLOSE. * src/manage.c (unmanage): kills ratpoison when there are no more windows. 2001-02-17 Ryan Yeske * Makefile.am (SUBDIRS): Source dir before documentation dirs. * autogen.sh: Do not continue if a step fails. 2001-02-17 Gergely Nagy <8@free.bsd.hu> * man/ratpoison.1, * doc/ratpoison.texi: removed reference to :center and :resize 2001-02-17 Ryan Yeske * src/actions.c (generate_key_event): Send KEY_PREFIX. 2001-02-17 Ryan Yeske * src/manage.c (current_screen): Rename get_screen() and move to this file. * src/input.c (get_input): Remove screen_info as paramater. Call current_screen() to get screen_info. * src/actions.c (get_screen): Remove. 2001-02-17 Gergely Nagy <8@free.bsd.hu> * src/actions.c (goto_window_by_name, rename_current_window, command) (shell_command, switch_to, xterm_command): changed static char[100]s to dynamic char *s, as get_input() now supports this * src/input.h: reflect get_input change * src/input.c (get_input): use dynamically allocated strings 2001-02-15 Gergely Nagy <8@free.bsd.hu> * autogen.sh: added autoheader call * debian/control: bumped Standards-Version * debian/copyright: changed URL * debian/patches/00list: removed 01-xterm * debian/patches/01-xterm.dpatch: removed, useless with 0.0.6 * debian/rules: rewritten using a newer version of my build system * man/Makefile.am: new file * Makefile.am (SUBDIRS): added man (debian_FILES): new variable, added to EXTRA_DIST * debian/ratpoison.1: moved... * man/ratpoison.1: ...here, and updated to include all the new keystrokes * doc/ratpoison.texi: updated * doc/ratpoison.info: regenerated * configure.in: fixed --enable-debug, added --with-emacs, added man/Makefile to AC_OUTPUT 2001-02-15 Gergely Nagy <8@free.bsd.hu> * src/getopt.c: fixed a warning * src/events.c (handle_key): use dynamically allocated strings * src/bar.c (display_msg_in_bar), * src/sbuf.c (xrealloc): changed an fprintf to PRINT_DEBUG 2001-02-15 Ryan Yeske * src/list.c (save_mouse_position): changed declaration of mask to unsigned int (get_mouse_root_position): changed declaration of mask to unsigned int * src/actions.c (xterm_command): added new function. Thanks to Ben Leslie (user_commands): added "xterm" (key_actions): added C-t C-! binding for "xterm" * src/messages.h (MESSAGE_PROMPT_XTERM_COMMAND): new message 2001-02-14 Ryan Yeske * src/actions.h (generate_key_event): added prototype * src/actions.c (key_actions): added additional keybindings to include C- versions for all keys. (generate_key_event): added command 2001-02-13 Ryan Yeske * src/bar.c (update_window_names): get indexes around current window text to pass to display_msg_in_bar (display_msg_in_bar): xor a rectangle around the text represented by mark_start and mark_end arguments * src/conf.h (BAR_FG_COLOR): changed to black (BAR_BG_COLOR): changed to white (FONT_NAME): changed to 9x15bold (BAR_Y_PADDING): changed to zero (BAR_X_PADDING): changed to zero * src/data.h (struct screen_info): removed bold_gc * src/events.c (handle_key): can no longer over modify keystrokes (handle_key): updated call to display_msg_in_bar to take extra highlighting parameters. * src/main.c (init_screen): removed bold_color (XGCValues gv): made global * src/actions.h (user_command): new struct (argtype): new enumeration * src/actions.h: many updated prototypes * src/actions.c (key_actions): every command is now executed by calling command() with a string version of the command, rewrote this table to reflect that. (user_commands): new symbol table added, a mapping between strings and functions and arguments. (spawn): now handles commands with arguments by calling them through "/bin/sh -c" (get_screen): new function. * src/actions.c: all calls to display_msg_in_bar updated to call with 2 additional highlight parameters. * src/actions.c (goto_win_by_name, rename_current_window, ...): most all user functions that need arguments will prompt the user for them, unless they are supplied. Allows the same function to be used interactively or internally. * src/bar.h (display_msg_in_bar): updated prototype * src/bar.c (display_msg_in_bar): takes two additional int arguments which are offsets into the string describing which part of the text to draw highlighted. (update_window_names): highlight current window 2001-02-12 Ryan Yeske * src/actions.c (spawn): will now execute commands with arguments by execl'ing through /bin/sh -c 2001-02-11 Ryan Yeske * autogen.sh: added to repository 2001-02-11 Ryan Yeske * src/ratpoison.h: #include "sbuf.h" removed duplicate #include "messages.h" * src/Makefile.am (ratpoison_SOURCES): added sbuf.c sbuf.h * src/bar.c (calc_bar_width): removed function (update_window_names): now builds up the entire window list string in dynamic storage before printing the window list. No longer displays the current window in a different colour. 2001-02-11 shawn * src/main.c (set_sig_handler): Added (main): Uses set_sig_handler() instead of signal() * src/manage.h (set_state): Added prototype * src/manage.c (send_configure): Now sends the window's x,y,width,height coordinates. (set_state): Added * src/events.c (map_request): Calls set_state when mapping an unmapped window. * src/actions.c (maximize_transient): takes an rp_window as the argument. Removed code to handle void *data. Incremental resizing only happens if the maximum size isn't set. Removed actual X maximization code. (maximize): Moved meat to maximize_normal(). 2001-02-10 Ryan Yeske * src/ratpoison.h: #include "messages.h" * src/list.h (goto_window_number): moved prototype to actions.h * src/actions.h (goto_window_number): added prototype (goto_window): removed prototype * src/Makefile.am (ratpoison_SOURCES): added messages.h * src/actions.c (prev_window): display correct message when there is no other window or there are no windows at all. (next_window): display correct message when there is no other window or there are no windows at all. (key_actions): all number keys call goto_window_number with an argument instead of a dedicated function. (key_actions): XK_exclam now runs execute_command * src/actions.c: replaced all user message strings with #define'd messages. * src/actions.h (goto_window): removed (goto_window_0): removed (goto_window_1): removed (goto_window_2): removed (goto_window_3): removed (goto_window_4): removed (goto_window_5): removed (goto_window_6): removed (goto_window_7): removed (goto_window_8): removed 2001-02-10 shawn * src/communications.c (send_restart, send_kill): Added * src/ratpoison.h: includes communications.h * src/main.c (send_restart, send_kill): Moved to communications.c * src/list.c (get_mouse_root_position): Added (add_to_window_list): Initialize new rp_window fields (save_mouse_position): Added (set_active_window): Added code to save and restore the position of the mouse * src/events.c (property_notify): Added code to listen for a WM_TRANSIENT_FOR property change. * src/data.h (struct rp_window): Added transient, transient_for, mouse_x, mouse_y. * src/actions.c (maximize_transient): Added (maximize): Added code to handle transient windows differently * src/Makefile.am (ratpoison_SOURCES): Added communications.h and communications.c 2001-02-04 Ryan Yeske * doc/ratpoison.texi: added keystroke for `Show current time.' * debian/ratpoison.1: added keystroke for `Show current time.' 2001-01-02 shawn * src/communications.c (send_restart): moved from main.c (send_kill): moved from main.c * src/main.c: Removed send_kill, send_restart * src/input.h: Added copyright notice. * src/input.c: Added copyright notice. * src/actions.c: Added copyright notice. 2001-02-04 Ryan Yeske * src/actions.c (prev_window): do not set active window when recursing. (next_window): do not set active window when recursing. 2001-01-28 Ryan Yeske * src/actions.c: changed rename_current_window key to `A', bound `a' to show_clock 2001-01-02 shawn * src/actions.h (show_clock): added prototype * src/actions.c (show_clock): added 2000-12-15 shawn * src/actions.c (maximize): increment size in hints->width_inc and hints->height_inc intervals * src/manage.c (manage): set the dimension members of the rp_window struct 2000-12-15 shawn * src/manage.c (manage): added ColormapChangeMask and StructureNotifyMask to events listened for on managed windows. * src/main.c (main): propagated changes to set_active_window usage * src/events.c: propagated changes to set_active_window usage * src/data.h (struct rp_window): Added colormap member * src/list.c (set_active_window): Installs colormap (set_active_window): sets rp_current_window to window passed in as parameter * src/actions.c (prev_window): No longer uses rp_current_window to keep track of state (next_window): No longer uses rp_current_window to keep track of state * src/list.c (add_to_window_list): sets member colormap to the DefaultColormap * src/manage.c (update_window_name): fixed memory leak. Not freeing the win->name before updating it. (manage): Gets the colormap now. * src/list.c (add_to_window_list): Added init code for `hints' * src/events.c (property_notify): Added handler for XA_WM_NORMAL_HINTS. * src/data.h (struct rp_window): Added XSizeHints member * src/actions.c (maximize): Adhere to the window's Size Hints 2000-12-14 shawn * src/manage.h (update_normal_hints): added prototype * src/manage.c (update_normal_hints): added * src/list.c (add_to_window_list): added comment describing function 2000-12-13 shawn * src/actions.c: removed gross tabs from key_actions definition. Add C-t space to go to next window. 2000-12-09 shawn * src/data.h (struct rp_window): added x, y, width, height, border; * src/events.c (configure_request): Now honours request, but then maximizes it afterwards. (configure_request): updates the rp_window's geometry fields * src/manage.c (manage): commented out XMoveResizeWindow call (send_configure): added * src/actions.h (maximize): added prototype * src/actions.c (maximize): added * src/input.c (cook_keycode): properly handle LockMask (cook_keycode): updated comments * src/input.h: added prototype for keysym_to_string * src/input.c (keysym_to_string): added * src/bar.c (show_bar): update_window_names(s) is called whether the bar is raised or not. * src/conf.h: Added BAR_Y_PADDING BAR_X_PADDING * src/list.c (goto_window_name): return success or failure * src/list.h: updated prototype for goto_window_name * src/events.c (handle_key): Added a message indicating an unbound key. * src/bar.c (display_msg_in_bar): added (update_window_names): uses BAR_X_PADDING instead of `5' (update_window_names): Updated BAR_PADDING to BAR_Y_PADDING * src/input.c (cook_keycode): mod is now an usigned int (read_key): Ignores modifier keys. Now returns keysym and modifiers. (get_input): Updated BAR_PADDING to BAR_Y_PADDING and BAR_X_PADDING. * src/events.c (handle_key): uses read_key instead of XMaskEvent to read a key. * src/actions.c (goto_window_number): window list is displayed on failure. (bye): added (switch_to): added (execute_command): no longer seg faults when no windows exist. 2000-12-03 shawn * src/input.h (cook_keycode): added prototype * src/actions.c: key_actions now uses the #define'd keysyms from X11/keysym.h * src/events.c (handle_key): calls cook_keycode() before processing the keysym. * src/input.c (read_key): calls cook_keycode() before returning the keysym (cook_keycode): added. 2000-12-01 shawn * src/list.c (find_window_by_name): added check to make sure the window's state is not STATE_UNMAPPED. 2000-11-27 shawn * src/events.c (handle_key): Code to generate the prefix event has been moved to generate_prefix(). * src/actions.h (toggle_bar): added prefixes for generate_prefix, and abort_keypress. * src/actions.c (generate_prefix): added. (abort_keypress): added. 2000-11-04 Ryan Yeske * src/Makefile.am (ratpoison_SOURCES): added getopt.c, getopt1.c and getopt.h 2000-10-30 Ryan Yeske * src/actions.h (execute_command): added prototype * src/actions.c (rename_current_window): added test to skip renaming if user entered an empty string (execute_command): added command (key_actions): execute_command is called by pressing ':' 2000-10-30 shawn * src/conf.h: added HIDE_MOUSE 2000-10-24 Ryan Yeske * src/bar.c (bar_x): rightmost border is no longer off screen 2000-10-20 shawn * src/events.c (key_press): fixed MODIFIER_PREFIX bug 2000-10-19 Ryan yeske * src/manage.c (unmanaged_window): added. * src/conf.h (PADDING_LEFT, PADDING_TOP, PADDING_RIGHT, PADDING_BOTTOM, UNMANAGED_WINDOW_LIST): added. Windows listed in UNMANAGED_WINDOW_LIST will not be managed. Space reserved for unmanaged windows can be defined with PADDING_* 2000-10-19 shawn * src/manage.c (get_window_name): added 2000-10-17 shawn * src/events.c (configure_request): resize windows to the max-1. Call XConfigureWindow as well as XSendEvent. * src/manage.c (scanwins): Now only maps visible windows * src/conf.h: Removed keystroke related defines * src/actions.c: Moved all key activated functions here. Added key_actions array. * src/events.c (unmap_notify): now properly unmaps windows * src/data.h: added ignore_badwindow * src/main.c (handler): added ability to ignore BadWindow errors 2000-10-15 shawn * src/main.c, src/data.h, src/events.c: Added ability to kill and hup running ratpoison processes.