(make-frame `((window-system . x)
(display . ,display) . ,parameters)))))
+(defun make-frame-on-tty (tty type &optional parameters)
+ "Make a frame on terminal device TTY.
+TTY should be the file name of the tty device to use. TYPE
+should be the terminal type string of TTY, for example \"xterm\"
+or \"vt100\". The optional third argument PARAMETERS specifies
+additional frame parameters."
+ ;; Use "F" rather than "f", in case the device does not exist, as
+ ;; far as the filesystem is concerned.
+ (interactive "FOpen frame on tty device: \nsTerminal type of %s: ")
+ (unless tty
+ (error "Invalid terminal device"))
+ (unless type
+ (error "Invalid terminal type"))
+ (if (eq window-system 'pc)
+ (make-frame `((window-system . pc) (tty . ,tty) (tty-type . ,type) . ,parameters))
+ (make-frame `((window-system . nil) (tty . ,tty) (tty-type . ,type) . ,parameters))))
+
(declare-function x-close-connection "xfns.c" (terminal))
(defun close-display-connection (display)
(defun server-create-tty-frame (tty type proc)
(add-to-list 'frame-inherited-parameters 'client)
- (unless tty (error "Invalid terminal device"))
- (unless type (error "Invalid terminal type"))
(let ((frame
(server-with-environment (process-get proc 'env)
'("LANG" "LC_CTYPE" "LC_ALL"
"TERMINFO_DIRS" "TERMPATH"
;; rxvt wants these
"COLORFGBG" "COLORTERM")
- (let ((ws (if (eq window-system 'pc) 'pc nil))
- ;; Ignore nowait here; we always need to clean up
- ;; opened ttys when the client dies.
- (parameters `((client . ,proc)
- ;; This is left over from an earlier
- ;; attempt at causing a process run in
- ;; the server process to use the
- ;; environment of the client process.
- ;; It has no effect now and to make it
- ;; work we'd need to decide how to make
- ;; process-environment interact with
- ;; client envvars, and then to change
- ;; the C functions `child_setup' and
- ;; `getenv_internal' accordingly.
- (environment . ,(process-get proc 'env)))))
- (make-frame `((window-system . ,ws)
- (tty . ,tty)
- (tty-type . ,type) . ,parameters))))))
+ (make-frame-on-tty tty type
+ ;; Ignore nowait here; we always need to
+ ;; clean up opened ttys when the client dies.
+ `((client . ,proc)
+ ;; This is a leftover from an earlier
+ ;; attempt at making it possible for process
+ ;; run in the server process to use the
+ ;; environment of the client process.
+ ;; It has no effect now and to make it work
+ ;; we'd need to decide how to make
+ ;; process-environment interact with client
+ ;; envvars, and then to change the
+ ;; C functions `child_setup' and
+ ;; `getenv_internal' accordingly.
+ (environment . ,(process-get proc 'env)))))))
+
;; ttys don't use the `display' parameter, but callproc.c does to set
;; the DISPLAY environment on subprocesses.
(set-frame-parameter frame 'display