diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c
index 0282cd560049882a5158b51045c5eba3def75e90..84fc47876b2f9b20dfdb5b796c917aa89f5684d3 100644
--- a/pd/src/x_interface.c
+++ b/pd/src/x_interface.c
@@ -56,55 +56,92 @@ static void *print_new(t_symbol *sel, int argc, t_atom *argv)
 
 static void print_bang(t_print *x)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s(s_bang.s_name);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%sbang", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""));
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s(s_bang.s_name);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_pointer(t_print *x, t_gpointer *gp)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s("(gpointer)");
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s(gpointer)", x->x_sym->s_name,
+            (*x->x_sym->s_name ? ": " : ""));
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s("(gpointer)");
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_float(t_print *x, t_floatarg f)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_f(f);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s%g", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""), f);
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_f(f);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_symbol(t_print *x, t_symbol *s)
 {
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    gui_s(s_symbol.s_name);
-    gui_s(s->s_name);
-    gui_end_array();
-    gui_end_vmess();
+    if (sys_nogui)
+        post("%s%s%s", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""),
+            s->s_name);
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        gui_s(s_symbol.s_name);
+        gui_s(s->s_name);
+        gui_end_array();
+        gui_end_vmess();
+    }
 }
 
 static void print_anything(t_print *x, t_symbol *s, int argc, t_atom *argv)
 {
     char buf[MAXPDSTRING];
-    gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
-    gui_start_array();
-    if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
-        gui_s(s->s_name);
-    for(; argc; argv++, argc--)
+    t_atom at;
+    if (sys_nogui)
     {
-        atom_string(argv, buf, MAXPDSTRING);
-        gui_s(buf);
+        startpost("%s%s", x->x_sym->s_name, (*x->x_sym->s_name ? ":" : ""));
+        if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
+        {
+            SETSYMBOL(&at, s);
+            postatom(1, &at);
+        }
+        postatom(argc, argv);
+        endpost();
+    }
+    else
+    {
+        gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);
+        gui_start_array();
+        if (s && (s != &s_list || (argc && argv->a_type != A_FLOAT)))
+            gui_s(s->s_name);
+        for(; argc; argv++, argc--)
+        {
+            atom_string(argv, buf, MAXPDSTRING);
+            gui_s(buf);
+        }
+        gui_end_array();
+        gui_end_vmess();
     }
-    gui_end_array();
-    gui_end_vmess();
 }
 
 static void print_setup(void)