Using getters and setters to change another variable C# Is it a bad practice to use getters and setters this way?

Below is my code:

public struct Settings
{
    public static int workMinutes
    {
        get
        {
            return Properties.Settings.Default.workMinutes;
        }
        set
        {
            Properties.Settings.Default.workMinutes = value;
            save();
        }
    }

    public static int restMinutes
    {
        get
        {
            return Properties.Settings.Default.restMinutes;
        }
        set
        {
            Properties.Settings.Default.restMinutes = value;
            save();
        }
    }

    public static void init()
    {
        if(Properties.Settings.Default.workMinutes == 0)
            Properties.Settings.Default.workMinutes = 5;

        if(Properties.Settings.Default.restMinutes == 0)
            Properties.Settings.Default.restMinutes = 5;

        save();
    }

    private static void save()
    {
        Properties.Settings.Default.Save();
    }
}
I don't think it's a bad practice at all. What you did is called encapsulation. It enables you to exchange the underlying configuration provider (currently the Properties.Settings) to something else without breaking your application because it doesn't rely directly on it. 

It's also called the Dependency Inversion Principle the higher module (your application) relies on an abstraction (your Settings) and not on the low level module (Properties.Settings). Usually it's build upon abstract types (or interfaces) but a lite version of this could be your settings layer.