From: MINAMI H. <mi...@ch...> - 2002-01-10 06:07:50
|
南です eterm では (たぶん aterm でも) ESC ] 20 ; filename [; adjusting ] [: operation] BEL で背景画像が変えられるようです (http://www.eterm.org/docs/view.php?doc=ref#image)。 どのくらい受け入れられている拡張なのかはよくしらないのですが、 これ(ら)が使えると GUI なしでもある程度は端末設定が変更できて 便利そうなので、とりあえず画像の変更だけはできるようにしてみました。 eterm とおなじく echo -e "\e]20;/path/to/foo.jpg;\007" で背景を foo.jpg に変更 読み込みに失敗したら背景画像の使用を停止 とかできるはずですが、いかがでしょう? diff -u2 -r ../../cvs-orig/mlterm/src/ml_term_screen.c src/ml_term_screen.c --- ../../cvs-orig/mlterm/src/ml_term_screen.c Wed Jan 9 22:56:25 2002 +++ src/ml_term_screen.c Thu Jan 10 13:08:41 2002 @@ -3907,2 +3907,48 @@ return font ; } + +int +ml_term_screen_change_wall_picture( + void * p , + char * file_path + ) +{ + ml_term_screen_t * termscr = p; + char * old_path = termscr->pic_file_path; + + if (!file_path){ + return 0; + } + if ( *file_path == '\0'){ + /* Do not change current image but alter diaplay setting */ + /* XXX nothing can be done for now */ + return 0; + } + + termscr->pic_file_path = strdup( file_path) ; + if ( !set_wall_picture( termscr)){ + if( old_path){ + free(termscr->pic_file_path); + termscr->pic_file_path = old_path; + } + unset_wall_picture( termscr); + return 0; + } + free( old_path); + return 1; +} diff -u2 -r ../../cvs-orig/mlterm/src/ml_term_screen.h src/ml_term_screen.h --- ../../cvs-orig/mlterm/src/ml_term_screen.h Wed Jan 9 22:56:25 2002 +++ src/ml_term_screen.h Wed Jan 9 23:34:51 2002 @@ -181,4 +181,5 @@ ml_font_t * ml_term_screen_get_font( ml_term_screen_t * termscr , ml_font_attr_t attr) ; +int ml_term_screen_change_wall_picture( void * p , char * file_path ); #endif diff -u2 -r ../../cvs-orig/mlterm/src/ml_vt100_command.c src/ml_vt100_command.c --- ../../cvs-orig/mlterm/src/ml_vt100_command.c Tue Jan 8 11:49:17 2002 +++ src/ml_vt100_command.c Thu Jan 10 10:59:46 2002 @@ -674,2 +674,12 @@ return 1 ; } + +int +ml_vt100_cmd_change_wall_picture( + ml_term_screen_t * termscr, + char * path + ) +{ + return ml_term_screen_change_wall_picture( termscr , path); +} diff -u2 -r ../../cvs-orig/mlterm/src/ml_vt100_command.h src/ml_vt100_command.h --- ../../cvs-orig/mlterm/src/ml_vt100_command.h Sun Jan 6 13:23:42 2002 +++ src/ml_vt100_command.h Wed Jan 9 21:15:01 2002 @@ -124,4 +124,6 @@ int ml_vt100_cmd_fill_all_with_e( ml_term_screen_t * termscr) ; +int ml_vt100_cmd_change_wall_picture( ml_term_screen_t * termscr , char * path) ; #endif diff -u2 -r ../../cvs-orig/mlterm/src/ml_vt100_parser.c src/ml_vt100_parser.c --- ../../cvs-orig/mlterm/src/ml_vt100_parser.c Wed Jan 9 22:56:25 2002 +++ src/ml_vt100_parser.c Thu Jan 10 14:13:57 2002 @@ -1724,4 +1724,27 @@ pt) ; } + else if( ps == 20) + { + /* image commands */ + char * index_p; + /* XXX discard all adjust./op. settings.*/ + /* XXX may break multi-byte character string. */ + /* XXX "index" do not conforms to ANSI-C */ + if ( index_p = index(pt, ';')){ + *index_p = '\0'; + } + if ( index_p = index(pt, ':')){ + *index_p = '\0'; + } + + ml_vt100_cmd_change_wall_picture( vt100_parser->termscr , pt); + } else if( ps == 46) { |