# put the perspective switcher on the top right
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight

# new-style tabs by default
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

# show progress on startup
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true

# default perspectiveId
org.eclipse.ui/defaultPerspectiveId = org.eclipse.ldt.ui.luaperspective
org.eclipse.ui/PERSPECTIVE_BAR_EXTRAS = org.eclipse.ldt.ui.luaperspective,org.eclipse.debug.ui.DebugPerspective

# check for updates on startup
org.eclipse.equinox.p2.ui.sdk.scheduler/enabled=true
org.eclipse.equinox.p2.ui.sdk.scheduler/schedule=on-startup

# remind the user every 4 hours
org.eclipse.equinox.p2.ui.sdk.scheduler/remindOnSchedule=true
# see AutomaticUpdatesPopup, values can be "30 minutes", "Hour", "4 Hours"
org.eclipse.equinox.p2.ui.sdk.scheduler/remindElapsedTime=4 Hours

# download updates before notifying the user
org.eclipse.equinox.p2.ui.sdk.scheduler/download=true

# hide RSE System type not used (for remote development support)
org.eclipse.rse.core/org.eclipse.rse.systemtype.linux.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.unix.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.local.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.windows.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.ssh.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.telnet.systemType.enabled = false
org.eclipse.rse.core/org.eclipse.rse.systemtype.ftp.systemType.enabled = false