Comprehensive setup scripts and configuration for running GNOME with tablet optimizations on Microsoft Surface Pro 6. Transform your Surface into a touch-first Linux tablet with iPad-like gestures, dock, and interface.
This repository provides automated installation and configuration to make your Surface Pro 6 a fully functional Linux tablet with GNOME desktop environment.
Target Distribution: EndeavourOS / Arch Linux (adaptable to other distributions)
Tested Hardware: Surface Pro 6 (i5-8250U, 8GB RAM)
Desktop Environment: GNOME 45+ with tablet extensions
- Automated 2-Phase Setup: Hardware support → Tablet interface
- Touchscreen & Stylus: Full IPTSD integration with pressure sensitivity
- iPad-Like Gestures: 3-finger/4-finger multitouch gestures via Touchégg
- Dash-to-Dock: iOS/iPadOS-style bottom dock
- Touch Controls Extension: Quick touchscreen toggle from top bar
- Power Management: Optimized battery life with auto-cpufreq
- Virtual Keyboard: Maliit keyboard for Wayland
- Tablet Apps: Xournal++ for notes, Foliate for reading
- EndeavourOS or Arch-based distribution installed
- GNOME desktop environment
- Internet connection
- Sudo privileges
Before running Phase 1:
- Create a system backup/snapshot (Timeshift recommended)
- Know how to access TTY:
Ctrl+Alt+F2 - Read the recovery guide: docs/emergency-recovery.md
Your old kernel will remain bootable - if graphics break, press Shift during boot to select it from GRUB.
# Clone this repository
git clone https://github.com/YOUR_USERNAME/surface-pro-6-arch-gnome.git
cd surface-pro-6-arch-gnome
# Run Phase 1 installation
./scripts/phase1-essential-setup.shWhat Phase 1 Installs:
- linux-surface kernel and headers
- IPTSD (Intel Precise Touch & Stylus Daemon)
- Wacom and stylus drivers
- Thermal management (thermald)
- Power management (auto-cpufreq, powertop)
- Bluetooth support
- Intel graphics drivers
- Screen rotation support (iio-sensor-proxy)
- Initramfs rebuild for new kernel
- GRUB configuration update with backup
After rebooting into the linux-surface kernel, you must calibrate IPTSD for optimal touch and stylus performance:
# Stop IPTSD service
sudo systemctl stop 'iptsd@*.service'
# Run calibration (follow on-screen instructions)
sudo iptsd-calibrate $(sudo iptsd-find-hidraw)
# Collect 3000-4000 samples by:
# - Touching with varying pressure
# - Placing all fingers simultaneously
# - Performing common gestures
# - Avoid palm contact during calibration
# Enable and start IPTSD
sudo systemctl enable iptsd@$(sudo iptsd-find-hidraw).service
sudo systemctl start iptsd@$(sudo iptsd-find-hidraw).serviceTransform your Surface into a premium tablet experience!
# Run Phase 2 installation (after completing Phase 1 + reboot)
./scripts/phase2-gnome-tablet.shWhat Phase 2 Includes:
- GNOME Extensions: Dash-to-Dock, GSConnect, tablet controls
- iPad-Like Gestures: Touchégg with optimized response times
- Touch-Friendly Themes: Materia theme, Papirus icons, larger fonts
- Virtual Keyboard: Maliit keyboard with auto-show
- Tablet Apps: Xournal++, Foliate, Drawing, GNOME apps
- Visual Polish: Touch-optimized scaling, spacing, and sizing
The script will prompt you to log out after installing extensions. After logging back in, run the script again to complete remaining steps.
Gesture Controls (After Phase 2):
- 3-finger swipe up: Show Activities Overview
- 3-finger swipe down: Minimize window
- 3-finger swipe left/right: Switch workspaces
- 4-finger pinch in: Show desktop
- 2-finger tap: Right-click
- 2-finger pinch: Zoom in/out (in supporting apps)
Browser-Specific:
- 2-finger swipe left/right: Back/forward navigation
surface-pro-6-arch-gnome/
├── scripts/
│ ├── phase1-essential-setup.sh # Hardware support installation
│ ├── phase2-gnome-tablet.sh # GNOME tablet interface setup
│ ├── enable-tablet-controls.sh # Enable custom extension
│ └── install-wallpapers.sh # Optional wallpaper install
├── docs/
│ ├── dash-to-panel-guide.md # Dock customization guide
│ ├── tablet-controls-extension.md # Custom extension docs
│ ├── tablet-ui-customization.md # Advanced GNOME theming
│ ├── power-management.md # Battery optimization
│ ├── stylus-writing-guide.md # Stylus app recommendations
│ ├── pdf-annotation-workflow.md # PDF workflow with stylus
│ ├── emergency-recovery.md # Recovery procedures
│ └── troubleshooting.md # Common issues and solutions
├── QUICK-START.md # Quick setup validation
├── TABLET-CONTROLS-SETUP.md # Extension setup guide
├── TEST-GESTURES.md # Gesture testing checklist
└── README.md # This file
| Component | Status | Notes |
|---|---|---|
| Touchscreen | ✅ Working | Requires IPTSD calibration |
| Stylus (Pressure) | ✅ Working | Full pressure sensitivity with IPTSD |
| Stylus (Tilt) | ✅ Working | Supported in compatible apps |
| Keyboard | ✅ Working | Type Cover fully functional |
| Trackpad | ✅ Working | Multitouch gestures supported |
| WiFi | ✅ Working | Requires linux-firmware-marvell |
| Bluetooth | ✅ Working | Fully functional |
| Screen Rotation | ✅ Working | Automatic with iio-sensor-proxy |
| Battery | ✅ Working | Accurate reporting |
| Cameras | ❌ Not Working | Intel IPU3 - detected but unusable, no Linux driver support |
| Fingerprint | ❌ Not Available | No built-in sensor (Type Cover accessory only) |
| Hibernate | Requires swap configuration | |
| Sleep/Suspend | Use hibernate instead |
With proper optimization:
- Battery Life: 5-7 hours active note-taking/writing
- Stylus Latency: <20ms (comparable to Windows)
- Palm Rejection: >95% effectiveness after IPTSD calibration
- Boot Time: ~15-20 seconds with SSD
- Gesture Response: <100ms (iPad-like smoothness)
- Dash-to-Dock: iPad-style bottom dock with transparency
- GSConnect: Android/iOS integration (SMS, notifications, file sharing)
- Surface Tablet Controls: Custom extension for touchscreen toggle
- Screen Rotate: Manual rotation controls
- Hibernate Status: Hibernate/suspend status in top bar
🚨 Graphics broken / Can't login after Phase 1: See emergency recovery guide: docs/emergency-recovery.md
- Press
Ctrl+Alt+F2for TTY access - Boot old kernel from GRUB menu (press
Shiftduring boot)
Touchscreen not working after boot:
sudo systemctl restart iptsd@*.serviceGestures not working:
sudo systemctl restart toucheggWiFi not connecting:
sudo pacman -S linux-firmware-marvell
sudo rebootExtension not showing after Phase 2:
# Log out and back in
# Or check extension status:
gnome-extensions list --enabled
gnome-extensions info dash-to-dock@micxgx.gmail.comVirtual keyboard not appearing:
- Make sure you're on Wayland session (not X11)
- Check if Maliit is running:
ps aux | grep maliit - Restart:
pkill maliit-server && maliit-server &
For detailed troubleshooting, see docs/troubleshooting.md
Sample configurations are provided in the docs/ directory:
- IPTSD Calibration: Palm rejection and stylus optimization
- Power Profiles: Battery saver, balanced, and performance modes
- Gesture Customization: Adding/modifying Touchégg gestures
- Extension Configuration: Dash-to-Dock, GSConnect, and more
- Phase 1: Essential hardware support automation
- Phase 2: GNOME tablet interface with gestures
- Custom tablet controls extension
- Touch-optimized theme and scaling
- Virtual keyboard integration (Maliit)
- Comprehensive documentation
- Hibernate/suspend optimization guide
- Advanced gesture customization tool
- One-click backup/restore script
- Fedora/Ubuntu adaptation guide
Contributions are welcome! This project benefits from real-world testing and improvements.
Ways to contribute:
- Test scripts on your Surface Pro 6 and report issues
- Share your IPTSD calibration improvements
- Document GNOME extension configurations
- Submit configuration improvements
- Improve documentation
This project builds upon:
- linux-surface - Surface hardware support
- IPTSD - Touch and stylus processing
- Touchégg - Gesture recognition
- auto-cpufreq - Power management
- Dash-to-Dock - GNOME dock extension
- linux-surface Wiki: https://github.com/linux-surface/linux-surface/wiki
- Community Support: https://matrix.to/#/#linux-surface:matrix.org
- r/SurfaceLinux: https://reddit.com/r/SurfaceLinux
- GNOME Extensions: https://extensions.gnome.org
- EndeavourOS Forums: https://forum.endeavouros.com/
MIT License - See LICENSE file for details
This software is provided as-is without warranty. Always backup your data before running system modification scripts. The author is not responsible for hardware damage or data loss.
Status: Active Development | Last Updated: 2025-11-12 | Maintainer: Your Name