diff --git a/configs/sim/gmoccapy/gmoccapy_800x600.ini b/configs/sim/gmoccapy/gmoccapy_800x600.ini
new file mode 100644
index 00000000000..3186fe29c89
--- /dev/null
+++ b/configs/sim/gmoccapy/gmoccapy_800x600.ini
@@ -0,0 +1,207 @@
+# EMC controller parameters for a simulated machine.
+# General note: Comments can either be preceded with a # or ; - either is
+# acceptable, although # is in keeping with most linux config files.
+
+# General section -------------------------------------------------------------
+[EMC]
+VERSION = 1.1
+MACHINE = gmoccapy
+DEBUG = 0
+
+# Sections for display options ------------------------------------------------
+[DISPLAY]
+DISPLAY = gmoccapy -i
+# Log level:
+# DEBUG -d
+# INFO -i
+# VERBOSE -v
+# ERROR -q
+
+# Cycle time, in milliseconds, that display will sleep between polls
+CYCLE_TIME = 100
+
+# Values that will be allowed for override, 1.0 = 100%
+MAX_FEED_OVERRIDE = 1.5
+MAX_SPINDLE_OVERRIDE = 1.2
+MIN_SPINDLE_OVERRIDE = 0.5
+
+# Max and default jog speeds in units per second
+MAX_LINEAR_VELOCITY = 166
+DEFAULT_LINEAR_VELOCITY = 100
+MAX_ANGULAR_VELOCITY = 234
+DEFAULT_SPINDLE_SPEED = 450
+
+# Prefix to be used
+PROGRAM_PREFIX = ../../nc_files/
+
+USER_COMMAND_FILE=gmoccapy_800x600.py
+
+# Introductory graphic
+INTRO_GRAPHIC = linuxcnc.gif
+INTRO_TIME = 5
+
+# list of selectable jog increments
+INCREMENTS = 1.000 mm, 0.100 mm, 0.010 mm, 0.001 mm, 1.2345 inch
+
+# for details see nc_files/subroutines/maco_instructions.txt
+[FILTER]
+PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
+PROGRAM_EXTENSION = .py Python Script
+png = image-to-gcode
+gif = image-to-gcode
+jpg = image-to-gcode
+py = python3
+
+# Task controller section -----------------------------------------------------
+[RS274NGC]
+RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
+PARAMETER_FILE = sim.var
+SUBROUTINE_PATH = macros
+
+# Motion control section ------------------------------------------------------
+[EMCMOT]
+EMCMOT = motmod
+COMM_TIMEOUT = 1.0
+BASE_PERIOD = 100000
+SERVO_PERIOD = 1000000
+
+# Hardware Abstraction Layer section --------------------------------------------------
+[TASK]
+TASK = milltask
+CYCLE_TIME = 0.001
+
+# Part program interpreter section --------------------------------------------
+[HAL]
+HALFILE = core_sim.hal
+HALFILE = spindle_sim.hal
+HALFILE = simulated_home.hal
+
+# Single file that is executed after the GUI has started.
+POSTGUI_HALFILE = gmoccapy_postgui.hal
+
+HALUI = halui
+
+# Trajectory planner section --------------------------------------------------
+[HALUI]
+#No Content
+
+[TRAJ]
+COORDINATES = X Y Z
+LINEAR_UNITS = mm
+ANGULAR_UNITS = degree
+DEFAULT_LINEAR_VELOCITY = 35
+MAX_LINEAR_VELOCITY = 234
+POSITION_FILE = position.txt
+NO_FORCE_HOMING = 1
+
+[EMCIO]
+EMCIO = io
+CYCLE_TIME = 0.100
+
+# tool table file
+TOOL_TABLE = tool.tbl
+TOOL_CHANGE_POSITION = 100 100 -10
+TOOL_CHANGE_QUILL_UP = 1
+
+[KINS]
+KINEMATICS = trivkins coordinates=xyz
+JOINTS = 3
+
+[AXIS_X]
+MIN_LIMIT = -400.0
+MAX_LIMIT = 400.0
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+
+[JOINT_0]
+TYPE = LINEAR
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -400.0
+MAX_LIMIT = 400.0
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 0.0
+HOME = 10
+HOME_SEARCH_VEL = 200.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 1
+HOME_IS_SHARED = 1
+
+# Second axis
+[AXIS_Y]
+MIN_LIMIT = -400.0
+MAX_LIMIT = 400.0
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+
+[JOINT_1]
+TYPE = LINEAR
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -400.0
+MAX_LIMIT = 400.0
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 0.0
+HOME = 10
+HOME_SEARCH_VEL = 200.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 1
+
+# Third axis
+[AXIS_Z]
+MIN_LIMIT = -400.0
+MAX_LIMIT = 0.001
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+
+[JOINT_2]
+TYPE = LINEAR
+MAX_VELOCITY = 166
+MAX_ACCELERATION = 1500.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -400.0
+MAX_LIMIT = 0.001
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 1.0
+HOME = -10
+HOME_SEARCH_VEL = 200.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 0
+HOME_IS_SHARED = 1
+
+# section for main IO controller parameters -----------------------------------
+[MACROS]
+MACRO = go_to_position x-pos y-pos z-pos
+MACRO = i_am_lost
+MACRO = increment x-incr y-incr
+MACRO = macro_4
+MACRO = macro_5
+MACRO = macro_6
+MACRO = macro_7
+MACRO = macro_8
+MACRO = macro_9
+MACRO = macro_10
+MACRO = macro_11
+MACRO = macro_12
+MACRO = macro_13
+MACRO = macro_14
+MACRO = macro_15
+
+
diff --git a/configs/sim/gmoccapy/gmoccapy_800x600.py b/configs/sim/gmoccapy/gmoccapy_800x600.py
new file mode 100644
index 00000000000..eb7056f01a8
--- /dev/null
+++ b/configs/sim/gmoccapy/gmoccapy_800x600.py
@@ -0,0 +1,103 @@
+# reduce size of v buttons
+self.widgets["vbtb_main"].set_size_request(78, -1)
+self.widgets["vbtb_main"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["lbl_time"].hide()
+
+# reorder settings
+self.widgets["vbox_window"].remove(self.widgets["frm_ntb_preview"])
+self.widgets["hbox_setup_appear"].remove(self.widgets["vbox_file"])
+self.widgets["vbox21"].remove(self.widgets["frm_turtle_jog"])
+
+box1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+box1.show()
+box1.pack_start(self.widgets["frm_turtle_jog"], False, False, 3)
+box1.pack_start(self.widgets["frm_ntb_preview"], False, False, 3)
+box2 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+box2.show()
+
+box_settings_3 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
+box_settings_3.pack_start(self.widgets["vbox_file"], False, False, 3)
+box_settings_3.pack_start(box1, False, False, 3)
+box_settings_3.pack_start(box2, False, False, 3)
+box_settings_3.show()
+# box_settings_3.set_spacing(5)
+label = Gtk.Label(label="Remaining")
+self.widgets["ntb_setup"].append_page(box_settings_3, label)
+
+
+# adjust style of button boxes to allow smaller spacing
+self.widgets["hbtb_main"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_MDI"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_auto"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_ref"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_touch_off"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_setup"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_edit"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_tool"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_load_file"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+self.widgets["hbtb_ref_joints"].set_layout(Gtk.ButtonBoxStyle.EXPAND)
+
+
+# further
+self.widgets["box_info"].remove(self.widgets["grid_search"])
+self.widgets["box_info"].remove(self.widgets["ntb_info"])
+self.widgets["hbox_main_info"].remove(self.widgets["box_tool_and_code_info"])
+# self.widgets["hbox_main_info"].remove(self.widgets["box_cooling"])
+
+self.widgets.tbtn_user_tabs.set_sensitive( True )
+self.user_tabs_enabled = True
+
+box_info = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+box_info.show()
+box_info.pack_start(self.widgets["box_tool_and_code_info"], False, False, 0)
+box_info.pack_end(self.widgets["ntb_info"], False, False, 0)
+self.widgets["ntb_user_tabs"].append_page(box_info, Gtk.Label("Info"))
+
+# buttons = [ "btn_homing", "btn_touch", "btn_tool", "btn_exit", "btn_load",
+# "btn_reload", "btn_run", "btn_stop", "btn_step", "btn_from_line", "btn_edit",
+# "btn_delete", "btn_classicladder", "btn_hal_scope", "btn_status",
+# "btn_hal_meter", "btn_calibration", "btn_show_hal", "btn_reload_edit",
+# "btn_save", "btn_save_as", "btn_new", "btn_keyb", "btn_back_edit",
+# "btn_delete_tool", "btn_add_tool", "btn_reload_tooltable",
+# "btn_apply_tool_changes", "btn_select_tool_by_no", "btn_index_tool",
+# "btn_change_tool", "btn_tool_touchoff_x", "btn_tool_touchoff_z",
+# "btn_back_tool", "btn_home", "btn_dir_up", "btn_sel_prev", "btn_sel_next",
+# "btn_jump_to", "btn_select", "btn_back_file_load", "tbtn_estop", "tbtn_on",
+# "tbtn_user_tabs", "tbtn_setup", "tbtn_switch_mode", "tbtn_fullsize_preview0",
+# "tbtn_pause", "tbtn_optional_blocks", "tbtn_fullsize_preview1", "rbt_manual",
+# "rbt_mdi", "rbt_auto" ]
+
+# labels = [ "lbl_space_0", "lbl_space_1", "lbl_space_2", "lbl_replace_mode_btn",
+# "lbl_space_3", "lbl_space_4", "lbl_version", "lbl_space_5", "lbl_space_6",
+# "lbl_space_7", "lbl_space_8", "lbl_space_9", "lbl_hide_tto_x",
+# "lbl_space_10", "lbl_space_11", "lbl_space_12" ]
+
+# for b in buttons:
+# self.widgets[b].set_size_request(60, 56)
+
+# for l in labels:
+# self.widgets[l].set_size_request(60, 56)
+
+
+# self.widgets.window1.fullscreen()
+
+bboxes = [
+ "hbtb_main",
+ "hbtb_MDI",
+ "hbtb_auto",
+ "hbtb_ref",
+ "hbtb_touch_off",
+ "hbtb_setup",
+ "hbtb_edit",
+ "hbtb_tool",
+ "hbtb_load_file",
+ "hbtb_ref_joints",
+ "vbtb_main"]
+
+for b in bboxes:
+ children = self.widgets[b].get_children()
+ for c in children:
+ c.set_size_request(60, 56)
+
+self.widgets["vbtb_jog_incr"].hide()
+self.widgets["vbx_jog"].set_size_request(-1, -1)
\ No newline at end of file
diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.glade b/src/emc/usr_intf/gmoccapy/gmoccapy.glade
index d11abd881dd..d7b68f561dd 100644
--- a/src/emc/usr_intf/gmoccapy/gmoccapy.glade
+++ b/src/emc/usr_intf/gmoccapy/gmoccapy.glade
@@ -22,9 +22,9 @@
0.10
@@ -121,9 +121,9 @@
@@ -756,8 +756,8 @@
gcode_view