summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README208
1 files changed, 208 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..015cc10
--- /dev/null
+++ b/README
@@ -0,0 +1,208 @@
+gmrun 0.9.2 http://students.infoiasi.ro/~mishoo/site/gmrun.epl
+------------ ---------------------------------------------------
+
+ Short GtkEntry for file autocompletion + main.cc that does the
+ needed stuff for running programs. This is intended as a
+ replacement to grun or gnome-run, which (sorry) sucks. The idea
+ comes from the KDE Window Manager (ALT-F2 in KDE). Though, GNOME
+ is better :)
+
+
+Copyright (c) 2000-2003 Mihai Bazon
+Author: Mihai Bazon <mishoo@infoiasi.ro>.
+
+send postcards to:
+
+ Mihai Bazon,
+ str. Republicii, nr. 350, sc. E, ap. 9, cod 6500 VASLUI - VASLUI
+ Romania
+
+This program falls under the GNU General Public License version 2 or above.
+
+
+Features
+---------
+
+ * Tilda completion (~/ <==> $HOME/)
+
+ * Completion works for separate words (e.g. you can type em<TAB> which
+ turns to emacs, type a SPACE, and write the file you want to open using
+ completion).
+
+ * I added history capability (limited to 20 entries, change history.cc for
+ more, #define HIST_MAX_SIZE). History is maintained in the file "
+ ~/.gmrun_history ".
+
+ CHANGED (since 0.5.3, I think..) -- new config file parameter: History.
+
+ * CTRL-Enter runs the command in a terminal. CTRL-Enter without any
+ command starts a new terminal.
+
+ * New configuration file: ~/.gmrunrc or /usr/local/share/gmrun/gmrunrc.
+ Check one of them, configuration is very simple. From that file you
+ can change window position and width, history size, terminal, URL
+ handlers, etc.
+
+ * You can use CTRL-R / CTRL-S to search through history, much like in bash
+ or Emacs. Also, pressing "!" as the first character enters some special
+ search mode, finding those history entries that begin with the entered
+ text.
+
+ * URL handlers (added in 0.6.0). Nice feature, allowing you to enter
+ lines like "http://www.google.com" to start your favorite browser on
+ www.google.com. The URL-s are configurable from the configuration
+ file, in a simple manner (I hope..).
+
+ * Extension handlers (added in 0.8.0). Basically you can run, for
+ instance, a ".txt" file, assuming that you have configured a handler for
+ it in the configuration file. The default handler for ".txt" files is,
+ of course, Emacs. But you can easily change that, you... you VIM user!
+
+ * UTF-8 support (added in 0.9.2)
+
+Requirements
+-------------
+
+ * A good C++ compiler (that is, g++ 3.0 or later). It did originally
+ compile with g++ 2.95, but not anymore ;-] -- though that's easy to fix.
+
+ * GTK-2. gmrun upto and including 0.8.1 were for GTK-1.x series, version
+ 0.9.0 requires GTK-2.
+
+
+For code critics
+-----------------
+
+ This program is written in 2 hours. The code might seem a little weird,
+ but it works, and that's what I'm interested in. Code completion is
+ written in C++, although GTK+ is written in standard C. Should you think
+ this is a problem, feel free to rewrite the code in C (it could be at
+ least 4 times bigger).
+
+ It uses some static data (I know, I'm a too lasy programmer to think about
+ something better); this means that if you're having *two or more*
+ GtkCompletionLine-s in a program, you're looking for trouble. The static
+ data will be *shared* between them, and completion might not work
+ correctly. However, I don't know for sure, and I'm not going to test
+ this.
+
+ Having all that said, you should know that I'm not actually a bad
+ programmer ;-] The problem being too simple for huge code complications, I
+ preferred the easy way of doing different kind of things. It works quite
+ fine, so "don't expect tons of C code for completion" (quoted from some
+ sources in mini-commander applet of GNOME).
+
+
+Compilation, installation
+--------------------------
+
+ Use the configure script:
+
+ $ ./configure
+ $ make
+ $ make install
+
+ After this the executable goes usually in /usr/local/bin, make sure this is
+ in your path. Put this in your .sawmillrc:
+
+ (require 'sawmill-defaults)
+ (bind-keys global-keymap "S-C-M-RET" '(system "gmrun &"))
+
+ Note that if you're using sawfish you have other ways to customize your
+ keyboard, through the control panel.
+
+ For another window managers you gonna have to find a way to bind this
+ program to a key combination; otherwise it wouldn't be much help... (I
+ coded it exactly to get rid of the mouse-time-wasting-walking).
+ E.g. for IceWM (my favorite, at this time) you edit ~/.icewm/preferences
+ and add a line like:
+
+ KeySysRun="Alt+Ctrl+Shift+Enter"
+
+
+Tips and tricks (hope that doesn't sound MS-ish...)
+----------------------------------------------------
+
+1. Everything that doesn't start with "/" or "~" gets completed from $PATH
+ environment var. More exactly, all files from $PATH directories are
+ subjects to completion (even if they are NOT executables; this is a
+ bug, but I'm afraid I'm not willing to fix it).
+
+ Pressing TAB once when no text is entered opens the completion window,
+ which will contain ALL files under $PATH.
+
+2. For instance you use TAB to complete from "nets" to "netscape-navigator".
+ A small window appears, allowing you to select from:
+
+ - netscape
+ - netscape-communicator
+ - netscape-navigator
+ - netstat
+
+ That is because all these executables have the same prefix, "nets". You
+ type TAB twice to get to the third element ("netscape-navigator"). Now,
+ if you want to add a parameter such as "-url http://blah.blah.org" you
+ can press SPACE (the list disappears, and a SPACE is inserted after the
+ netscape-navigator).
+
+3. If you accidentally pressed TAB more than you wanted (in that small
+ window, described above) you can use UP / DOWN arrows to select the right
+ completion.
+
+4. - ESC closes the completion window, leaving the selected text in the entry.
+ - HOME / END - the same, but clears the selection.
+ - SPACE - the same, but clears the selection and appends one space.
+ - Pressing ENTER (anytime) runs the command that is written in the entry.
+ - Pressing CTRL+Enter (anytime) runs the command in a terminal (check your
+ configuration file). But if the entry is empty (no text is present, or
+ only whitespaces) then a fresh terminal will be started.
+
+5. Suppose you use CTRL-R to search backwards through history. If,
+ accidentally, you skipped the line that you're interested in, you can use
+ CTRL-S to search forward. This is more awesome than in bash :) It
+ basically acts like a filter on history, for which you use CTRL-R instead
+ of UP arrow, and CTRL-S instead of DOWN arrow.
+
+ The same if you search something with "!": only lines that BEGIN with the
+ entered text are matching, but you can reverse the search order using
+ CTRL-R / CTRL-S. Very flexible approach.
+
+
+Bugs
+-----
+
+ * It gets pretty slow... Maybe I should consider writting it in ANSI-C,
+ but.... maybe not.
+
+ * Writting this README took me more time than writting the program.
+
+ * As I mentioned before, the code is written in C++, although GTK+ is a
+ C library. This is not actually a bug; I like C++ because programs
+ become clearer and easier to maintain, not to mention the source file
+ size is smaller. So, if anyone cares to port this to standard C, feel
+ free to do it, but I fear the code should be rewritten (almost) from
+ scratch.
+
+ * Documentation is inexistent (except this file) (however, it would be
+ quite useless).
+
+ Should you have any problems mail me a detailed description; please put
+ the text "ignore_me" in the subject line, for easy message filtering. :)
+ (just kidding... I would gladely help if I can).
+
+ * Actually I worked more than 2 hours. Anyway, the completion code took
+ about 2-3 h to design and implement.
+
+
+Disclaimer
+-----------
+
+ * The Short Way:
+ NO WARRANTIES OF ANY KIND. USE IT AT YOUR OWN RISK.
+
+ * The Right Way:
+ Please read the GNU General Public License. This program falls under
+ its terms.
+
+
+ (: END OF TERMS AND CONDITIONS :)