I am trying to run a script before the login screen in `Ubuntu 19.04`. The script checks if there is an external monitor connected to my notebook and if there is one it changes the resolution to 3440x1440@44 and switches off the internal laptop display. This is my script:

    #!/bin/bash
    
    EXTERNAL_OUTPUT="HDMI-1-1"
    INTERNAL_OUTPUT="eDP-1-1"
    
    xrandr |grep $EXTERNAL_OUTPUT | grep " connected "
    if [ $? -eq 0 ]; then
        xrandr --output $INTERNAL_OUTPUT --off
        xrandr --newmode "3440x1440_44.00"  299.75  3440 3664 4024 4608  1440 1443 1453 1479 -hsync +vsync
        xrandr --addmode HDMI-1-1 "3440x1440_44.00"
        xrandr --output HDMI-1-1 --mode "3440x1440_44.00"
    else
        xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off
    fi
I have tried to put this script both in `~/.profile` and also in the Startup Applications but my GDM login is still present only on my notebook screen. I want this script to be executed even before that time so that I am not present with a black picture upon starting my computer.

[UPDATE]: I have tried both proposed solutions but they were both not working. First I have tried the solution of Fiximan. I have created the monitor-check.service in `/etc/systemd/system` and tried to execute the `/bin/bash /home/user/monitor-check.service` and it successfully changed the laptop resolution to 3440x1440. Then I have tried to execute: `sudo systemctl start monitor-check.sh` and this is the status message: 

    monitor-check.service - Service to check for external monitors during boot.
       Loaded: loaded (/etc/systemd/system/monitor-check.service; enabled; vendor preset: enabled)
       Active: failed (Result: exit-code) since Tue 2019-07-09 19:27:17 CEST; 5s ago
      Process: 4177 ExecStart=/bin/bash /home/user/Documents/scripts/display_setup.sh (code=exited, status=1/FAILURE)
     Main PID: 4177 (code=exited, status=1/FAILURE)
    
    Jul 09 19:27:17 acer systemd[1]: Started Service to check for external monitors during boot..
    Jul 09 19:27:17 acer bash[4177]: Can't open display
    Jul 09 19:27:17 acer bash[4177]: Can't open display
    Jul 09 19:27:17 acer systemd[1]: monitor-check.service: Main process exited, code=exited, status=1/FAILURE
    Jul 09 19:27:17 acer systemd[1]: monitor-check.service: Failed with result 'exit-code'.
I have tried to add the environment variable to the Xauthority by adding:
`Environment=XAUTHORITY=/run/user/1000/gdm/Xauthority` to the `Service` section but it didn't help. 

I have also tried the proposed solution by Praveen but it didn't work either. In fact, I have added my script to `/etc/profile.d` directory but it didn't execute the script so my resolution was still the old one. 

In conclusion, the only two solutions which worked was to add the script to the `~/.profile` or to add it manually to the Startup Applications but both solutions change the resolution and switches off the internal laptop display after logon to the system.