"...бесконечный рабочий стол,чтобы его можно было прокрутить в право или вверх..."
Как вариант:
1) предполагаем, что "рабочий стол" - это координатная плоскость;
2) изначально верхний(нижний) левый угол - координата 0,0;
3) позиция каждой иконки записывается парой значений (X и Y соответственно), которые могут быть как положительными, так и отрицательными;
4) меняя позицию верхнего(нижнего) левого угла на плоскости - можем перемещаться по "бесконечному" "рабочему столу", отображая лиш видимые в данной части "стола" иконки, расположив их относительно координат угла;
По интерфейсу - прямоугольник с парой цифр (значения X и Y) через запятую. Один клик - активизация курсора для ручного ввода значений. Двойной клик - установка значений в 0,0. Изменение позиции - проводка мышкой по экрану с нажатой кнопкой (правой или колёсиком или Ctrl)...
Для "бесконечности" наверно пары байт на одну координату хватит...

И чтоб людей "к хорошему приучать" и место на экране экономить - координаты выводить в "шеснадцатиричке"

"И чтобы рабочий стол являлся папкой. "
Cделать из файла zip архив (чтоб по клику/ентору в него заходить), где координата - имя директория, а содержимое - параметры ярлыка

)