Giga Display Shield - Implementing Simple Multiple Screen Display

Can the giga display do more then 5 touch widgets on a screen?
Can i jump between multiple pages screens images and get more buttons and widgets on other screens? (8/6/24 answer is yes.)
Does the display have a sleep mode or screen saver of some sort when not in use? (answer, not sure yet)
Is there a video out there with lots of widgets and jumping back and forth between screen page images?

No. Read the documentation.

That sounds like a program you need to write.

Read the documentation...

Before I purchase a giga screen I wanted to see an example where someone has created more than one screen with 3 or 4 buttons and a slider. Or some screen with a graphic and no functionality. They do look nice. I am trying to build some confidence I can do more than that though. I did look into the very long list of documentation on the LVGL site... they have something about creating screens and loading screens.
Objects — LVGL documentation
Has anyone seen it done on a giga display. Would be nice to have a main screen and be able to jump to other screens with buttons and functions. I took a peek at github, not sure if it had more than code and text.

I am also looking for dimensions of mounting holes relative to one another. The documentation has mounting hole radius dimensions, but is missing the other ones.
ASX00039-datasheet.pdf (arduino.cc)
I also purchased a giga and a giga display, will see what i can figure out for doing multiple windows and being able to go back and forth between windows using LVGL.

I am able to get do multiple screens on the display and jump between them using buttons and events from those buttons. Not sure if I am doing it the best way but here is what I did.

So any time i touch a push button I run it runs the event:

//Display Programming it seems that "btn" tag is generic in here
static void btn1scrn2_event_cb(lv_event_t * e) {
  lv_obj_t * btn = (lv_obj_t*) lv_event_get_target(e);
  lv_obj_t * label = lv_obj_get_child(btn, 0);
  lv_label_set_text_fmt(label, "Screen 2!");
  Screen2Ons = 1;
}

//Display Programming it seems that "btn" and "label" tags is generic in here
static void btn1scrn3_event_cb(lv_event_t * e) {
  lv_obj_t * btn = (lv_obj_t*) lv_event_get_target(e);
  lv_obj_t * label = lv_obj_get_child(btn, 0);
  lv_label_set_text_fmt(label, "Screen 3!");
  Screen3Ons = 1;
}

Then in those events I set Ons one shot bits that run code in the void loop, the code in the loop runs the tab for the screen that was picked by the button:

if (Screen2Ons == 1){
    screen2prgm();
    Screen2Ons = 0;
  }
  if (Screen3Ons == 1){
    screen3prgm();
    Screen3Ons = 0;
  }

Anytime I press the button to get to another screen i run all the programming there is to create the screen, for the full screen. Not sure if i need to or not but it works. Do I need to run the full screen creation each time? Maybe only one line with "lv_scr_load(screen2);" would be enough? Not sure if i should be doing any sort of lv_scr_act() each time i go to a new screen? also not sure if i should be deleting a screen each time i exit a screen lv_obj_del(screen2)? I looked at the lvgl web page but was not sure. Input using, and possible implementing these instructions better is welcome.
Example:

void screen1prgm(){
  //Creates screen1 and sets it as the active screen
  lv_obj_t * screen1 = lv_obj_create(lv_scr_act());
  //Sets "screen1" to the same size as "Display"
  lv_obj_set_size(screen1, Display.width(), Display.height());
  
  //Not sure what this does yet
  static lv_coord_t col_dsc[] = { 500, LV_GRID_TEMPLATE_LAST};
  static lv_coord_t row_dsc[] = { 400, LV_GRID_TEMPLATE_LAST};

  lv_obj_t * grid1 = lv_obj_create(lv_scr_act());

  lv_obj_set_grid_dsc_array(grid1, col_dsc, row_dsc);
  //grid getting put into screen also gets same dimensions as "Display" created above
  lv_obj_set_size(grid1, Display.width(), Display.height());

  lv_obj_center(grid1);

  //Create an undefined label tags
  lv_obj_t * label1scrn2;
  lv_obj_t * label1scrn3;
  //Create an undefined tag called obj
  lv_obj_t * obj1;

  //"obj1" now gets defined as an object that belongs to "grid"
  obj1 = lv_obj_create(grid1);
  lv_obj_set_grid_cell(obj1, LV_GRID_ALIGN_STRETCH, 0, 1,
                        LV_GRID_ALIGN_STRETCH, 0, 1);
  lv_obj_set_flex_flow(obj1, LV_FLEX_FLOW_COLUMN);

  //"btn1scrn2" gets created and defined as a button belonging to "obj1"
  lv_obj_t * btn1scrn2 = lv_btn_create(obj1);
  lv_obj_set_size(btn1scrn2, 100, 80);
  lv_obj_center(btn1scrn2);
  lv_obj_add_event_cb(btn1scrn2, btn1scrn2_event_cb, LV_EVENT_CLICKED, NULL);
  //now the "label1scrn2" gets defined as a label that belongs to btn1go
  label1scrn2 = lv_label_create(btn1scrn2);
  lv_label_set_text(label1scrn2, "Screen 2");
  lv_obj_center(label1scrn2);

  //"btn1scrn3" gets created and defined as a button belonging to "obj1"
  lv_obj_t * btn1scrn3 = lv_btn_create(obj1);
  lv_obj_set_size(btn1scrn3, 100, 80);
  lv_obj_center(btn1scrn3);
  lv_obj_add_event_cb(btn1scrn3, btn1scrn3_event_cb, LV_EVENT_CLICKED, NULL);
  //now the "label1scrn3" gets defined as a label that belongs to btn1
  label1scrn3 = lv_label_create(btn1scrn3);
  lv_label_set_text(label1scrn3, "Screen3");
  lv_obj_center(label1scrn3);

  lv_obj_t * led1z3 = lv_led_create(obj1);
  lv_obj_align(led1z3, LV_ALIGN_CENTER, 200, 200);
}