
Gwern Branwen wrote:
On 2007.10.23 14:50:35 +0200, Christian Thiemann
scribbled 0 lines: On 2007.10.23 11:29:34 +0300, "Valery V. Vorotyntsev"
scribbled 0 lines: On 10/19/07, gwern0@gmail.com
wrote: Fri Oct 19 14:09:00 EDT 2007 gwern0@gmail.com * Run.hs, ShellPrompt.sh: mv runInXTerm to ShellPrompt.hs What is the purpose of this moving? IMHO, the function fits nicely in Run.hs. IIRC, leaving runInXTerm in Run.hs causes a cyclical import - but I might have moved it because it made more sense to me in there. The function was in a stand-alone module named RunInXTerm before the runXXX functions were collected into Run. So the situation for the function itself is unchanged. Probably the dependencies of the other runXXX-functions cause some cyclical imports, but Run.hs just imports XMonad from the core and nothing from the contrib, so I don't see where a
Gwern Branwen wrote: problem might arise, unless XMonad.hs imports some contrib modules, which is not the case.
Conceptually I find it odd that I now need to import the whole ShellPrompt facility just to get a command that has nothing to do with ShellPrompt.
Greetings, Christian
Perhaps I don't understand your intent with runInXTerm then? My understanding was that it was supposed to take a string argument, pass it through the shell which would do whatever it specified, and then run the resultant command in an terminal specified by the shell (falling back to XTerm). This makes perfect sense to go into ShellPrompt to me - it's dealing with the shell, after all. Run.hs has various ways of running commands, ShellPrompt has various ways of running shell commands, and XSelection has various ways of dealing with the X selection.
ShellPrompt is providing a graphical prompt asking for a command to execute (not in a terminal - runInXTerm was introduced by Andrea in RunInXTerm.hs for import in SshPrompt.hs to bring up an ssh in a shell). But you don't need the graphical ShellPrompt or the SshPrompt for running something in XTerm. The probably more convincing examples are runProcessWithInput and runProcessWithInputAndWait: these were originally defined in Dmenu.hs and Dzen.hs - because they were handy functions to bring up a dmenu or dzen instance - and some other contribs then included Dmenu or Dzen just to get these functions, without using the dmenu or dzen related stuff. That seemed odd to me. Similarly, SshPrompt relies on being able to run something in a terminal (thus it should import some module that provides this functionality) but runInXTerm does not need the graphical SshPrompt (or ShellPrompt), thus I think one should not need to include ShellPrompt to be able to run something in a terminal. Greetings, Christian -- Christian Thiemann mail@christian-thiemann.de