diff --git a/README.md b/README.md index ee5e3c8..4f7bfb3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,173 @@ # xconfig -xconfig is an xorg automation tool for configuring GhostBSD X Window configuration. + +**Intelligent X11 Configuration Tool for GhostBSD** + +[![GhostBSD](https://img.shields.io/badge/GhostBSD-25.x%2B-blue.svg)](https://ghostbsd.org/) +[![License](https://img.shields.io/badge/License-BSD--2--Clause-green.svg)](LICENSE) +[![Shell](https://img.shields.io/badge/Shell-POSIX%20sh-lightgrey.svg)](https://en.wikipedia.org/wiki/POSIX) + +`xconfig` is a comprehensive X Window System configuration tool for GhostBSD/FreeBSD. It performs intelligent hardware detection, installs the right drivers, and applies optimized Xorg configurations for physical GPUs and common hypervisors. It includes an interactive **bsddialog**-based menu for manual selection. + +--- + +## Supported Hardware & Platforms + +### GPUs + +* **Intel**: `i915kms` (auto or with external config) +* **AMD**: `amdgpu` (modern) and `radeonkms` (legacy) +* **NVIDIA**: auto classifies to a supported branch (e.g., `nvidia-driver-580/470/390/340/304`) +* **Generic**: `vesa`, `scfb` (syscons framebuffer) + +### Virtualization + +* **VirtualBox** (vboxguest/vboxservice enable & start) +* **VMware** +* **QEMU/KVM** +* **Microsoft Hyper-V** +* **Unknown Hypervisors**: `vesa` fallback + +--- + +## Requirements + +* GhostBSD / FreeBSD with `pkg` +* `bsddialog` (preferred) or `dialog` +* X Window components present on the system +* Root privileges (`sudo`) + +> The script will also use `/xdrivers` (if available) for offline `.pkg` files, falling back to `pkg` repos otherwise. + +--- + +## Installation + +### Quick Install + +```bash +# Clone +git clone https://github.com/GhostBSD/xconfig.git +cd xconfig + +# Install the script +sudo install -m 755 bin/xconfig /usr/local/bin/xconfig + +# Install external config templates (system-wide) +sudo mkdir -p /usr/local/etc/X11/cardDetect +sudo cp -r cardDetect/* /usr/local/etc/X11/cardDetect/ +``` + +> The script also looks for `cardDetect` **next to the script** (`$SCRIPT_DIR/cardDetect`) so you can run in-tree during development. + +--- + +## Usage + +### Automatic (recommended) + +```bash +sudo xconfig auto +``` + +Detects hardware and applies the best configuration (including NVIDIA/AMD/Intel and hypervisors). + +### Interactive setup + +```bash +sudo xconfig setup +# or +sudo xconfig manual +``` + +Opens the bsddialog/dialog UI. Choices are built safely via `set --` (no fragile quoting). + +### Direct targets + +```bash +# GPUs +sudo xconfig nvidia # Auto-detect the correct NVIDIA branch +sudo xconfig intel # Intel with external config template +sudo xconfig intel-auto # Intel auto (no config file) +sudo xconfig amd # Auto decide: amdgpu or radeonkms (based on device) +sudo xconfig amdgpu # Force amdgpu template +sudo xconfig radeonkms # Force radeonkms template + +# Virtualization +sudo xconfig virtualbox +sudo xconfig vmware +sudo xconfig qemu +sudo xconfig hyperv + +# Fallback / recovery +sudo xconfig vesa +sudo xconfig scfb +sudo xconfig safe + +# Advanced +sudo xconfig dual # Dual-monitor template +``` + +### System Info / Debug + +```bash +sudo xconfig debug +``` + +Prints FreeBSD version, detected GPUs, candidate drivers, current Xorg status, presence of `/xdrivers`, and available config templates. + +--- + +## External Configuration Files + +Place templates in either: + +* `$(dirname "$0")/cardDetect/` (development/portable), or +* `/usr/local/etc/X11/cardDetect/` (system-wide) + +| File | Purpose | +| ----------------------- | ------------------------ | +| `XF86Config.intel` | Intel (i915kms, tuned) | +| `XF86Config.amdgpu` | Modern AMD (Glamor/DRI3) | +| `XF86Config.radeonkms` | Legacy AMD (DRI2) | +| `XF86Config.virtualbox` | VirtualBox | +| `XF86Config.vmware` | VMware | +| `XF86Config.qemu` | QEMU/KVM | +| `XF86Config.hyperv` | Microsoft Hyper-V | +| `XF86Config.scfb` | Syscons framebuffer | +| `XF86Config.vesa` | Generic VESA | +| `XF86Config.safe` | Minimal recovery | +| `XF86Config.dual` | Dual-monitor starter | + +> When a template is applied, the existing `/etc/X11/xorg.conf` is backed up to `/etc/X11/backup/xorg.conf.YYYYMMDD_HHMMSS`. + +--- + +## NVIDIA Branch Selection (heuristic) + +The script classifies the device and selects an appropriate package branch: + +* Newer/modern: `nvidia-driver-580` +* Previous gens: `nvidia-driver-470` +* Older gens: `nvidia-driver-390`, `nvidia-driver-340`, `nvidia-driver-304` + +> Exact package names available on your system may vary; the script lists available `nvidia-driver-*` if installation fails. + +--- + +## Offline Drivers (`/xdrivers`) + +If `/xdrivers/drivers-list` and corresponding `.pkg` files exist, `xconfig` installs from there first: + +``` +/xdrivers/drivers-list # lines: " " +/xdrivers/ # package payloads +``` + +Falls back to `pkg install` on failure. + +--- + +## License + +BSD 2-Clause “Simplified” License — see [LICENSE](LICENSE). + diff --git a/bin/xconfig b/bin/xconfig index 92e8652..d89fb9f 100755 --- a/bin/xconfig +++ b/bin/xconfig @@ -1,335 +1,705 @@ #!/bin/sh -if ! [ "$(id -u)" = 0 ]; then - echo "You must be root to run xconfig" - exit 1 -fi - -TOSTART=$1 - -NVERSION=$(pkg info -x nvidia-driver | cut -d '-' -f3) -#bootmethod=$(sysctl -n machdep.bootmethod) - - - -ndrivers="GeForce RTX 5090 Laptop GPU|GeForce RTX 5080 Laptop GPU|GeForce RTX 5070 Ti Laptop GPU|GeForce RTX 5070 Laptop GPU|GeForce RTX 5060 Laptop GPU|GeForce RTX 5090 D|GeForce RTX 5090|GeForce RTX 5080|GeForce RTX 5070 Ti|GeForce RTX 5070|GeForce RTX 5060 Ti|GeForce RTX 5060|GeForce RTX 4090 Laptop GPU|GeForce RTX 4080 Laptop GPU|GeForce RTX 4070 Laptop GPU|GeForce RTX 4060 Laptop GPU|GeForce RTX 4050 Laptop GPU|GeForce RTX 4090 D|GeForce RTX 4090|GeForce RTX 4080 SUPER|GeForce RTX 4080|GeForce RTX 4070 Ti SUPER|GeForce RTX 4070 Ti|GeForce RTX 4070 SUPER|GeForce RTX 4070|GeForce RTX 4060 Ti|GeForce RTX 4060|GeForce RTX 3080 Ti Laptop GPU|GeForce RTX 3080 Laptop GPU|GeForce RTX 3070 Ti Laptop GPU|GeForce RTX 3070 Laptop GPU|GeForce RTX 3060 Laptop GPU|GeForce RTX 3050 Ti Laptop GPU|GeForce RTX 3050 Laptop GPU|GeForce RTX 3090 Ti|GeForce RTX 3090|GeForce RTX 3080 Ti|GeForce RTX 3080|GeForce RTX 3070 Ti|GeForce RTX 3070|GeForce RTX 3060 Ti|GeForce RTX 3060|GeForce RTX 3050|GeForce RTX 2080 SUPER|GeForce RTX 2080|GeForce RTX 2070 SUPER|GeForce RTX 2070|GeForce RTX 2060|GeForce RTX 2050|GeForce RTX 2080 Ti|GeForce RTX 2080 SUPER|GeForce RTX 2080|GeForce RTX 2070 SUPER|GeForce RTX 2070|GeForce RTX 2060 SUPER|GeForce RTX 2060|GeForce MX570|GeForce MX550|GeForce MX450|GeForce MX350|GeForce MX330|GeForce MX250|GeForce MX230|GeForce MX150|GeForce MX130|GeForce MX110|GeForce GTX 1660 Ti|GeForce GTX 1650 Ti|GeForce GTX 1650|GeForce GTX 1660 SUPER|GeForce GTX 1650 SUPER|GeForce GTX 1660 Ti|GeForce GTX 1660|GeForce GTX 1650|GeForce GTX 1630|GeForce GTX 1080 Ti|GeForce GTX 1080|GeForce GTX 1070 Ti|GeForce GTX 1070|GeForce GTX 1060|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GT 1030|GeForce GT 1010|GeForce GTX 1080|GeForce GTX 1070|GeForce GTX 1060|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GTX 980 Ti|GeForce GTX 980|GeForce GTX 970|GeForce GTX 960|GeForce GTX 950|GeForce GTX 980|GeForce GTX 980M|GeForce GTX 970M|GeForce GTX 965M|GeForce GTX 960M|GeForce GTX 950M|GeForce 945M|GeForce 940MX|GeForce 930MX|GeForce 920MX|GeForce 940M|GeForce 930M|GeForce GTX 860M|GeForce GTX 850M|GeForce 845M|GeForce 840M|GeForce 830M|GeForce GTX 750 Ti|GeForce GTX 750|GeForce GTX 745|NVIDIA TITAN RTX|NVIDIA TITAN V|NVIDIA TITAN Xp|NVIDIA TITAN X (Pascal)|GeForce GTX TITAN X|NVIDIA RTX PRO 6000 Blackwell Workstation|NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation|NVIDIA RTX PRO 5000 Blackwell|NVIDIA RTX PRO 4500 Blackwell|NVIDIA RTX PRO 4000 Blackwell|NVIDIA RTX 6000 Ada Generation|NVIDIA RTX 5880 Ada Generation|NVIDIA RTX 5000 Ada Generation|NVIDIA RTX 4500 Ada Generation|NVIDIA RTX 4000 Ada Generation|NVIDIA RTX 4000 SFF Ada Generation|NVIDIA RTX 2000 Ada Generation|NVIDIA RTX 2000E Ada Generation|NVIDIA RTX A6000|NVIDIA RTX A5500|NVIDIA RTX A5000|NVIDIA RTX A4500|NVIDIA RTX A4000H|NVIDIA RTX A4000|NVIDIA RTX A2000 12GB|NVIDIA RTX A2000|NVIDIA RTX A1000|NVIDIA RTX A400|NVIDIA A800 40GB Active|NVIDIA T1000 8GB|NVIDIA T1000|NVIDIA T600|NVIDIA T400 4GB|NVIDIA T400|NVIDIA T400E|NVIDIA RTX 5000 Ada Generation Laptop GPU|NVIDIA RTX 4000 Ada Generation Laptop GPU|NVIDIA RTX 3500 Ada Generation Laptop GPU|NVIDIA RTX 3000 Ada Generation Laptop GPU|NVIDIA RTX 2000 Ada Generation Laptop GPU|NVIDIA RTX 1000 Ada Generation Laptop GPU|NVIDIA RTX 500 Ada Generation Laptop GPU|NVIDIA RTX A5500 Laptop GPU|NVIDIA RTX A5000 Laptop GPU|NVIDIA RTX A4500 Laptop GPU|NVIDIA RTX A4000 Laptop GPU|NVIDIA RTX A3000 12GB Laptop GPU|NVIDIA RTX A3000 Laptop GPU|NVIDIA RTX A2000 8GB Laptop GPU|NVIDIA RTX A2000 Laptop GPU|NVIDIA RTX A1000 6GB Laptop GPU|NVIDIA RTX A1000 Laptop GPU|NVIDIA RTX A500 Laptop GPU|NVIDIA T1200 Laptop GPU|NVIDIA T600 Laptop GPU|NVIDIA T550 Laptop GPU|NVIDIA T500|Quadro RTX 8000|Quadro RTX 6000|Quadro RTX 5000|Quadro RTX 4000|Quadro RTX 3000|Quadro RTX 6000|Quadro RTX 5000|Quadro RTX 4000|Quadro RTX 3000|Quadro GV100|Quadro GP100|Quadro P6000|Quadro P5200|Quadro P5000|Quadro P4000|Quadro P2200|Quadro P2000|Quadro P1000|Quadro P620|Quadro P600|Quadro P400|Quadro M6000 24GB|Quadro M6000|Quadro M5000|Quadro M4000|Quadro M2000|Quadro K2200|Quadro K1200|Quadro K620|Quadro T2000|Quadro T1000|Quadro P5200|Quadro P5000|Quadro P4200|Quadro P3200|Quadro P4000|Quadro P3000|Quadro P2000|Quadro P1000|Quadro P600|Quadro P520|Quadro P500|Quadro M2200|Quadro M1200|Quadro M620|Quadro M520|Quadro M5500|Quadro M5000M|Quadro M4000M|Quadro M3000M|Quadro M2000M|Quadro M1000M|Quadro M600M|Quadro M500M|Quadro K2200M|Quadro K620M|Quadro P5000|Quadro P3000|Quadro M5000 SE|Quadro M3000 SE|NVS 810|NVS 810" -n470drivers="NVIDIA TITAN RTX|NVIDIA TITAN V|NVIDIA TITAN Xp|NVIDIA TITAN X (Pascal)|GeForce GTX TITAN X|GeForce GTX TITAN|GeForce GTX TITAN Black|GeForce GTX TITAN Z|GeForce RTX 3080 Laptop GPU|GeForce RTX 3070 Laptop GPU|GeForce RTX 3060 Laptop GPU|GeForce RTX 3050 Ti Mobile|GeForce RTX 3050 Ti Laptop GPU|GeForce RTX 3050 Laptop GPU|GeForce RTX 3090|GeForce RTX 3080 Ti|GeForce RTX 3080|GeForce RTX 3070 Ti|GeForce RTX 3070|GeForce RTX 3060 Ti|GeForce RTX 3060|GeForce RTX 2080 SUPER|GeForce RTX 2080|GeForce RTX 2070 SUPER|GeForce RTX 2070|GeForce RTX 2060|GeForce RTX 2050|GeForce RTX 2080 Ti|GeForce RTX 2080 SUPER|GeForce RTX 2080|GeForce RTX 2070 SUPER|GeForce RTX 2070|GeForce RTX 2060 SUPER|GeForce RTX 2060|GeForce MX570|GeForce MX550|GeForce MX450|GeForce MX350|GeForce MX330|GeForce MX250|GeForce MX230|GeForce MX150|GeForce MX130|GeForce MX110|GeForce GTX 1660 Ti|GeForce GTX 1650 Ti|GeForce GTX 1650|GeForce GTX 1660 SUPER|GeForce GTX 1650 SUPER|GeForce GTX 1660 Ti|GeForce GTX 1660|GeForce GTX 1650|GeForce GTX 1080 Ti|GeForce GTX 1080|GeForce GTX 1070 Ti|GeForce GTX 1070|GeForce GTX 1060|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GT 1030|GeForce GT 1010|GeForce GTX 1080|GeForce GTX 1070|GeForce GTX 1060|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GTX 980 Ti|GeForce GTX 980|GeForce GTX 970|GeForce GTX 960|GeForce GTX 950|GeForce GTX 980|GeForce GTX 980M|GeForce GTX 970M|GeForce GTX 965M|GeForce GTX 960M|GeForce GTX 950M|GeForce 945M|GeForce 940MX|GeForce 930MX|GeForce 920MX|GeForce 940M|GeForce 930M|GeForce GTX 860M|GeForce GTX 850M|GeForce 845M|GeForce 840M|GeForce 830M|GeForce GTX 780 Ti|GeForce GTX 780|GeForce GTX 770|GeForce GTX 760|GeForce GTX 760 Ti (OEM)|GeForce GTX 750 Ti|GeForce GTX 750|GeForce GTX 745|GeForce GT 740|GeForce GT 730|GeForce GT 720|GeForce GT 710|GeForce GTX 690|GeForce GTX 680|GeForce GTX 670|GeForce GTX 660 Ti|GeForce GTX 660|GeForce GTX 650 Ti BOOST|GeForce GTX 650 Ti|GeForce GTX 650|GeForce GTX 645|GeForce GT 640|GeForce GT 635|NVIDIA RTX A6000|NVIDIA RTX A5000|NVIDIA RTX A4500|NVIDIA RTX A4000|NVIDIA RTX A2000 12GB|NVIDIA RTX A2000|NVIDIA T1000 8GB|NVIDIA T1000|NVIDIA T600|NVIDIA T400 4GB|NVIDIA T400|NVIDIA RTX A5000 Laptop GPU|NVIDIA RTX A4000 Laptop GPU|NVIDIA RTX A3000 Laptop GPU|NVIDIA RTX A2000 Laptop GPU|NVIDIA T1200 Laptop GPU |NVIDIA T600 Laptop GPU|NVIDIA T500|Quadro RTX 8000|Quadro RTX 6000|Quadro RTX 5000|Quadro RTX 4000|Quadro RTX 3000|Quadro RTX 6000|Quadro GV100|Quadro GP100|Quadro P6000|Quadro P5200|Quadro P5000|Quadro P4000|Quadro P2200|Quadro P2000|Quadro P1000|Quadro P620|Quadro P600|Quadro P400|Quadro M6000 24GB|Quadro M6000|Quadro M5000|Quadro M4000|Quadro M2000|Quadro K6000|Quadro K5200|Quadro K5000|Quadro K4000|Quadro K4200|Quadro K2200|Quadro K2000|Quadro K2000D|Quadro K1200|Quadro K620|Quadro K600|Quadro K420|Quadro 410|Quadro T2000|Quadro T1000|Quadro P5200|Quadro P5000|Quadro P4200|Quadro P3200|Quadro P4000|Quadro P3000|Quadro P2000|Quadro P1000|Quadro P600|Quadro P520|Quadro P500|Quadro M2200|Quadro M1200|Quadro M620|Quadro M520|Quadro M5500|Quadro M5000M|Quadro M4000M|Quadro M3000M|Quadro M2000M|Quadro M1000M|Quadro M600M|Quadro M500M|Quadro K2200M|Quadro K620M|Quadro P5000|Quadro P3000|Quadro M5000 SE|Quadro M3000 SE|NVS 810|NVS 510|GRID K520|NVS 810|NVS 510" -n390drivers="GeForce GTX 480|GeForce GTX 465|GeForce GTX 480M|GeForce GTX 470|GeForce GT 440|GeForce GTS 450|GeForce GTS 450|GeForce GTS 450|GeForce GT 555M|GeForce GT 555M|GeForce GTX 460M|GeForce GT 445M|GeForce GT 435M|GeForce GT 550M|GeForce GT 440|GeForce GT 430|GeForce GT 420|GeForce GT 635M|GeForce GT 520|GeForce GT 530|GeForce GT 610|GeForce GT 620M|GeForce GT 630M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 640M LE|GeForce GT 635M|GeForce 610M|GeForce 615|GeForce 615|GeForce 615|GeForce 615|GeForce 615|GeForce GT 555M|GeForce GT 525M|GeForce GT 520M|GeForce GT 415M|GeForce GT 425M|GeForce GT 420M|GeForce GT 435M|GeForce GT 420M|GeForce GT 540M|GeForce GT 630M|GeForce GT 630M|GeForce GT 525M|GeForce GT 550M|GeForce GT 520M|GeForce GTX 460|GeForce GTX 460 SE|GeForce GTX 460|GeForce GTX 470M|GeForce GTX 485M|GeForce GT 630|GeForce GT 620|GeForce GT 730|GeForce GT 610|GeForce GT 640|GeForce GT 640|GeForce GT 630|GeForce GTX 650|GeForce GT 740|GeForce GT 730|GeForce GT 755M|GeForce GT 640M LE|GeForce GT 650M|GeForce GT 640M|GeForce GT 640M LE|GeForce GT 640M LE|GeForce GT 640M LE|GeForce GTX 660M|GeForce GT 650M|GeForce GT 640M|GeForce GT 645M|GeForce GT 740M|GeForce GTX 660M|GeForce GT 730M|GeForce GT 745M|GeForce GT 745M|GeForce GT 745A|GeForce GT 745A|GeForce GT 750M|GeForce GT 750M|GeForce GT 755M|GeForce 710A|GeForce 820M|GeForce 810M|GeForce GTX TITAN Z|GeForce GTX 780|GeForce GTX TITAN|GeForce GTX 780|GeForce GTX 780 Ti|GeForce GTX 780 Ti|GeForce GTX TITAN Black|GeForce GT 520|GeForce 510|GeForce 605|GeForce GT 620|GeForce GT 610|GeForce GT 625 (OEM)|GeForce GT 625|GeForce GT 625|GeForce GT 625|GeForce GT 625|GeForce GT 625|GeForce GT 705|GeForce GT 520M|GeForce GT 520MX|GeForce GT 520M|GeForce 410M|GeForce 410M|GeForce 610M|GeForce 610|GeForce 800A|GeForce 705A|GeForce 800A|GeForce 800A|GeForce 800A|GeForce 800A|GeForce 800A|GeForce 610M|GeForce 610M|GeForce 705M|GeForce 705A|GeForce 800A|GeForce 705A|GeForce 800A|GeForce GTX 580|GeForce GTX 570|GeForce GTX 560 Ti|GeForce GTX 560|GeForce GTX 570|GeForce GTX 560 Ti|GeForce GTX 590|GeForce GTX 580|GeForce GTX 580|GeForce 820M|GeForce GT 720M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 620M|GeForce GT 720M|GeForce 710M|GeForce 710M|GeForce GT 720M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce 710M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 810M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 810M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 630M|GeForce GT 630M|GeForce GT 620M|GeForce GT 620M|GeForce GT 625M|GeForce GT 630M|GeForce GT 630M|GeForce GT 630M|GeForce GT 625M|GeForce GT 625M|GeForce GT 625M|GeForce GT 625M|GeForce GT 625M|GeForce GT 625M|GeForce GT 630M|GeForce GT 720M|GeForce GT 720M|GeForce GT 630M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 630M|GeForce GT 630M|GeForce GT 630M|GeForce GT 630M|GeForce GT 630M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 720A|GeForce 710A|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 620M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 620M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 710M|GeForce GT 710M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce GT 620M|GeForce GT 630M|GeForce GT 620M|GeForce 820M|GeForce GT 620M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 820M|GeForce 820M|GeForce GT 710M|GeForce GT 720M|GeForce 820M|GeForce 720M|GeForce GT 720M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce 720M|GeForce GT 720M|GeForce 820M|GeForce GT 720M|GeForce 820M|GeForce 620M|GeForce GT 630M|GeForce GT 630M|GeForce GT 820M|GeForce 710M|GeForce 820M|GeForce GT 630M|GeForce 710M|GeForce GT 720M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720A|GeForce 820A|GeForce 720A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce GT 620M|GeForce 705M|GeForce 800M|GeForce 820A|GeForce 800M|GeForce 800M|GeForce 800M|GeForce 705A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce 820A|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 720M|GeForce GT 820M|GeForce GT 820M|GeForce GT 820M|GeForce GT 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce 610M|GeForce 710M|GeForce 710M|GeForce GT 625M|GeForce GT 720M|GeForce 820M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce 610M|GeForce 610M|GeForce GT 720M|GeForce 705M|GeForce GT 620M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce GT 720M|GeForce 710M|GeForce 710M|GeForce 710M|GeForce GT 720M|GeForce 710M|GeForce GT 720M|GeForce GT 720M|GeForce 705M|GeForce 705M|GeForce 820M|GeForce 820M|GeForce 710M|GeForce 820M|GeForce 820M|GeForce 710M|GeForce 710M|GeForce GT 720M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce GT 620M|GeForce GT 620M|GeForce 820M|GeForce GT 720M|GeForce 820M|GeForce 820M|GeForce 820M|GeForce GT 720M|GeForce 820M|GeForce 810M|GeForce GTX 680|GeForce GTX 660 Ti|GeForce GTX 770|GeForce GTX 660|GeForce GTX 760|GeForce GTX 760|GeForce GTX 690|GeForce GTX 670|GeForce GTX 760 Ti OEM|GeForce GTX 760 (192-bit)|GeForce GTX 760 Ti OEM|GeForce GTX 660|GeForce GTX 880M|GeForce GTX 870M|GeForce GTX 760|GeForce GTX 860M|GeForce GTX 775M|GeForce GTX 780M|GeForce GTX 780M|GeForce GTX 680M|GeForce GTX 670MX|GeForce GTX 675MX|GeForce GTX 680MX|GeForce GTX 675MX|GeForce GTX 660|GeForce GTX 650 Ti BOOST|GeForce GTX 650 Ti|GeForce GTX 645|GeForce GT 740|GeForce GTX 650 Ti|GeForce GTX 650|GeForce GT 740|GeForce GTX 770M|GeForce GTX 765M|GeForce GTX 765M|GeForce GTX 760M|GeForce GTX 760A|GeForce GTX 560 Ti|GeForce GTX 560|GeForce GTX 460 SE v2|GeForce GTX 460 v2|GeForce GTX 555|GeForce GT 645|GeForce GTX 560 SE|GeForce GTX 570M|GeForce GTX 580M|GeForce GTX 675M|GeForce GTX 670M|GeForce GT 545|GeForce GT 545|GeForce GTX 550 Ti|GeForce GTS 450|GeForce GT 550M|GeForce GT 555M|GeForce GT 635M|GeForce GT 635M|GeForce GT 635M|GeForce GT 555M|GeForce GTS 450|GeForce GT 640|GeForce GT 555M|GeForce GT 635M|GeForce GTX 560M|GeForce GT 635|GeForce GT 710|GeForce GT 640|GeForce GT 630|GeForce GT 720|GeForce GT 730|GeForce GT 720|GeForce GT 710|GeForce GT 710|GeForce GT 730M|GeForce 730A|GeForce GT 735M|GeForce GT 740M|GeForce GT 740A|GeForce GT 740A|GeForce GT 740A|GeForce GT 730M|GeForce 710M|GeForce 710A|GeForce 710A|GeForce 810A|GeForce 810A|GeForce 805A|GeForce 710A|GeForce 825M|GeForce GT 720M|GeForce 920M|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce 920A|GeForce GT 730|GeForce 910M|GeForce 830M|GeForce 830A|GeForce 840M|GeForce 840A|GeForce 840A|GeForce 840A|GeForce 840A|GeForce 845M|GeForce 930M|GeForce 930A|GeForce 930A|GeForce 930A|GeForce 930A|GeForce 940M|GeForce 940A|GeForce 940A|GeForce 945M|GeForce 945A|GeForce 930M|GeForce 930A|GeForce 930A|GeForce 930A|GeForce 930A|GeForce 930A|GeForce 940MX|GeForce GPU|GeForce 940MX|GeForce 930MX|GeForce 920MX|GeForce 940A|GeForce GTX 750 Ti|GeForce GTX 750|GeForce GTX 745|GeForce 845M|GeForce GTX 850M|GeForce GTX 850A|GeForce GTX 860M|GeForce GPU|GeForce GTX 750 Ti|GeForce GTX 750 Ti|GeForce 840M|GeForce 845M|GeForce 945M|GeForce GTX 950M|GeForce GTX 950A|GeForce GTX 950A|GeForce GTX 950A|GeForce GTX 950A|GeForce GTX 950A|GeForce GTX 950A|GeForce GTX 960M|GeForce GTX 750 Ti|GeForce GTX 860M|GeForce GTX 960A|GeForce GTX 750Ti|GeForce GTX 960A|GeForce GTX 750 Ti|GeForce GTX 750Ti|GeForce 940M|GeForce GTX 750 Ti|GeForce GTX 980|GeForce GTX 970|GeForce GTX 980M|GeForce GTX 970M|GeForce GTX 960|GeForce GTX 960|GeForce GTX 960|GeForce GTX 960|GeForce GTX 960|GeForce GTX 965M|GeForce GTX 980|GeForce GTX 960|GeForce GTX 950|GeForce GTX 960|GeForce GTX 750|GeForce GTX 965M|GeForce GTX 950|GeForce GTX 980M|GeForce GTX 970M|GeForce GTX 965M|GeForce GTX 980|GeForce GTX 965M|GeForce MX130|GeForce MX110|GeForce 940MX|GeForce GTX TITAN X|GeForce GTX 980 Ti|TITAN X (Pascal)|TITAN Xp|TITAN Xp COLLECTORS EDITION|TITAN Xp COLLECTORS EDITION|GeForce GTX 1080 Ti|GeForce GTX 1080|GeForce GTX 1070|GeForce GTX 1070 Ti|GeForce GTX 1060 6GB|GeForce GTX 1060 3GB|P104-100|GeForce GTX 1080|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1070|GeForce GTX 1070 with MaxQ Design|GeForce GTX 1070 With Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|P104-101|GeForce GTX 1080|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1080 with Max-Q Design|GeForce GTX 1070|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1070 with Max-Q Design|GeForce GTX 1060 3GB|GeForce GTX 1060 6GB|GeForce GTX 1060 5GB|GeForce GTX 1060 6GB|P106-100|P106-090|GeForce GTX 1060|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GTX 1060|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1060 with Max-Q Design|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GTX 1050|GeForce GTX 1050 Ti|GeForce GTX 1050|GeForce GTX 1050 Ti|GeForce GTX 1050 Ti with Max-Q Design|GeForce GTX 1050 Ti with Max-Q Design|GeForce GTX 1050 Ti with Max-Q Design|GeForce GTX 1050|GeForce GTX 1050 with Max-Q Design|GeForce GTX 1050 with Max-Q Design|GeForce GTX 1050 with Max-Q Design|GeForce GTX 1050 with Max-Q Design|GeForce GT 1030|GeForce MX150|GeForce MX150|TITAN V|Quadro 6000|Quadro 5000|Quadro 5000M|Quadro 6000|Quadro 4000|Quadro 2000|Quadro 2000D|Quadro 2000M|Quadro 600|Quadro 500M|Quadro 1000M|Quadro 3000M|Quadro 4000M|Quadro K420|Quadro K1100M|Quadro K500M|Quadro K2000D|Quadro K600|Quadro K2000M|Quadro K1000M|Quadro K2000|Quadro 410|Quadro K6000|Quadro K5200|Quadro 5010M|Quadro 7000|Quadro K4200|Quadro K3100M|Quadro K4100M|Quadro K5100M|Quadro K5000|Quadro K5000M|Quadro K4000M|Quadro K3000M|Quadro K4000|Quadro K2100M|Quadro K610M|Quadro K510M|Quadro K620M|Quadro M500M|Quadro M500M|Quadro M520|Quadro M2000M|Quadro M1000M|Quadro M600M|Quadro K2200M|Quadro M620|Quadro M1200|Quadro K2200|Quadro K620|Quadro K1200|Quadro M5000|Quadro M4000|Quadro M5000M|Quadro M5000 SE|Quadro M4000M|Quadro M3000M|Quadro M3000 SE|Quadro M5500|Quadro M2000|Quadro GP100|Quadro M6000|Quadro M6000 24GB|Quadro P6000|Quadro P5000|Quadro P4000|Quadro P5200|Quadro P5000|Quadro P4000|Quadro P4000 with Max-Q Design|Quadro P4000 with Max-Q Design|Quadro P3000|Quadro P4200|Quadro P3200|Quadro P2000|Quadro P1000|Quadro P600|Quadro P400|Quadro P620|Quadro P2000|Quadro P1000|Quadro P600|Quadro P500|Quadro GV100|NVS 5400M|NVS 5200M|NVS 510|NVS 4200M|NVS 4200M|NVS 315|NVS 310|NVS 5200M|NVS 5200M|NVS 5200M|NVS 5200M|NVS 5200M|NVS 5200M|NVS 5200M|NVS 810|Tesla C2050 / C2070|Tesla C2050|Tesla C2070|Tesla M2070|Tesla X2070|Tesla T20 Processor|Tesla S2050|Tesla M2050|Tesla X2070|Tesla M2050|Tesla M2050|Tesla M2050|Tesla M2050|Tesla M2050|Tesla M2070-Q|Tesla K20Xm|Tesla K20c|Tesla K40m|Tesla K40c|Tesla K20s|Tesla K40st|Tesla K20m|Tesla K40s|Tesla K40t|Tesla K80|Tesla M2090|Tesla X2090|Tesla X2090|Tesla X2090|Tesla X2090|Tesla M2075|Tesla C2075|Tesla C2050|Tesla K10|Tesla K8|Tesla M60|Tesla M6|Tesla M4|Quadro M2200|Tesla P100-PCIE-12GB|Tesla P100-PCIE-16GB|Tesla P100-SXM2-16GB|Tesla M40|Tesla M40 24GB|Tesla P40|Tesla P4|Tesla P6|Tesla V100-SXM2-16GB|Tesla V100-FHHL-16GB|Tesla V100-PCIE-16GB|Tesla V100-SXM2-32GB|Tesla V100-PCIE-32GB|Tesla V100-DGXS-32GB|GRID K520" -n340drivers="GeForce 8800 GTX|GeForce 8800 GTS|GeForce 8800 Ultra|Tesla C870|Quadro FX 5600|Quadro FX 4600|GeForce 8600 GTS|GeForce 8600 GT|GeForce 8600 GT|GeForce 8600 GS|GeForce 8400 GS|GeForce 9500M GS|GeForce 8300 GS|GeForce 8600M GT|GeForce 9650M GS|GeForce 8700M GT|Quadro FX 370|Quadro NVS 320M|Quadro FX 570M|Quadro FX 1600M|Quadro FX 570|Quadro FX 1700|GeForce GT 330|GeForce 8400 SE|GeForce 8500 GT|GeForce 8400 GS|GeForce 8300 GS|GeForce 8400 GS|GeForce 8600M GS|GeForce 8400M GT|GeForce 8400M GS|GeForce 8400M G|Quadro NVS 140M|Quadro NVS 130M|Quadro NVS 135M|GeForce 9400 GT|Quadro FX 360M|GeForce 9300M G|Quadro NVS 290|GeForce GTX 295|GeForce GTX 280|GeForce GTX 260|GeForce GTX 285|GeForce GTX 275|Tesla C1060|Tesla T10 Processor|Tesla T10 Processor|Tesla M1060|Tesla M1060|Tesla M1060|GeForce GTX 260|GeForce GTX 295|Quadroplex 2200 D2|Quadroplex 2200 S4|Quadro CX|Quadro FX 5800|Quadro FX 4800|Quadro FX 3800|GeForce 8800 GTS 512|GeForce 9800 GT|GeForce 8800 GT|GeForce GT 230|GeForce 9800 GX2|GeForce 9800 GT|GeForce 8800 GS|GeForce GTS 240|GeForce 9800M GTX|GeForce 8800M GTS|GeForce 8800 GS|GeForce GTX 280M|GeForce 9800M GT|GeForce 8800M GTX|GeForce 8800 GS|GeForce GTX 285M|GeForce 9600 GSO|GeForce 8800 GT|GeForce 9800 GTX/9800 GTX+|GeForce 9800 GTX+|GeForce 9800 GT|GeForce GTS 250|GeForce 9800M GTX|GeForce GTX 260M|Quadro FX 4700 X2|Quadro FX 3700|Quadro VX 200|Quadro FX 3600M|Quadro FX 2800M|Quadro FX 3700M|Quadro FX 3800M|GeForce GT 230|GeForce 9600 GT|GeForce 9600 GS|GeForce 9600 GSO 512|GeForce GT 130|GeForce GT 140|GeForce 9800M GTS|GeForce 9700M GTS|GeForce 9800M GS|GeForce 9800M GTS|GeForce 9600 GT|GeForce 9600 GT|GeForce GT 130|GeForce 9700 S|GeForce GTS 160M|GeForce GTS 150M|GeForce 9600 GSO|GeForce 9600 GT|Quadro FX 1800|Quadro FX 2700M|GeForce 9500 GT|GeForce 9400 GT|GeForce 9500 GT|GeForce 9500 GS|GeForce 9500 GS|GeForce GT 120|GeForce 9600M GT|GeForce 9600M GS|GeForce 9600M GT|GeForce GT 220M|GeForce 9700M GT|GeForce 9500M G|GeForce 9650M GT|GeForce G 110M|GeForce GT 130M|GeForce GT 240M LE|GeForce GT 120M|GeForce GT 220M|GeForce GT 320M|GeForce GT 320M|GeForce GT 120|GeForce GT 120|Quadro FX 380|Quadro FX 580|Quadro FX 1700M|GeForce 9400 GT|Quadro FX 770M|GeForce 9300 GE|GeForce 9300 GS|GeForce 8400|GeForce 8400 SE|GeForce 8400 GS|GeForce 9300M GS|GeForce G100|GeForce 9300 SE|GeForce 9200M GS|GeForce 9200M GE|GeForce 9300M GS|Quadro NVS 150M|Quadro NVS 160M|GeForce G 105M|GeForce G 103M|GeForce G105M|Quadro NVS 420|Quadro FX 370 LP|Quadro FX 370 Low Profile|Quadro NVS 450|Quadro FX 370M|Quadro NVS 295|HICx16 + Graphics|HICx8 + Graphics|GeForce 8200M|GeForce 9100M G|GeForce 8200M G|GeForce 9200|GeForce 9100|GeForce 8300|GeForce 8200|nForce 730a|GeForce 9200|nForce 980a/780a SLI|nForce 750a SLI|GeForce 8100 / nForce 720a|GeForce 9400|GeForce 9400|GeForce 9400M G|GeForce 9400M|GeForce 9300|ION|GeForce 9400M G|GeForce 9400M|GeForce 9400|nForce 760i SLI|GeForce 9400|GeForce 9400|GeForce 9300 / nForce 730i|GeForce 9200|GeForce 9100M G|GeForce 8200M G|GeForce 9400M|GeForce 9200|GeForce G102M|GeForce G205M|GeForce G102M|GeForce G205M|ION|ION|GeForce 9400|ION|ION LE|ION LE|GeForce 320M|GeForce 320M|GeForce 320M|GeForce 320M|GeForce 320M|GeForce GT 220|GeForce 315|GeForce 210|GeForce 405|GeForce 405|GeForce GT 230M|GeForce GT 330M|GeForce GT 230M|GeForce GT 330M|NVS 5100M|GeForce GT 320M|GeForce GT 415|GeForce GT 240M|GeForce GT 325M|Quadro 400|Quadro FX 880M|GeForce G210|GeForce 205|GeForce 310|Second Generation ION|GeForce 210|GeForce 310|GeForce 315|GeForce G105M|GeForce G105M|NVS 2100M|NVS 3100M|GeForce 305M|Second Generation ION|Second Generation ION|GeForce 310M|Second Generation ION|Second Generation ION|GeForce 305M|GeForce 310M|GeForce 305M|Second Generation ION|Second Generation ION|GeForce G210M|GeForce G210|GeForce 310M|Second Generation ION|Second Generation ION|Quadro FX 380 LP|GeForce 315M|GeForce 405|GeForce 405|GeForce 405|GeForce 405|GeForce 405|GeForce 405M|GeForce 405M|GeForce 405|GeForce 405|GeForce 405|Quadro FX 380M|GeForce GT 330|GeForce GT 320|GeForce GT 240|GeForce GT 340|GeForce GT 220|GeForce GT 330|GeForce GTS 260M|GeForce GTS 250M|GeForce GT 220|GeForce GT 335M|GeForce GTS 350M|GeForce GTS 360M|Quadro FX 1800M|GeForce 9300 GS|GeForce 8400GS|GeForce 405|NVS 300" -n304drivers="GeForce 6800 Ultra|GeForce 6800|GeForce 6800 LE|GeForce 6800 XE|GeForce 6800 XT|GeForce 6800 GT|GeForce 6800 GT|GeForce 6800 GS|GeForce 6800 XT|Quadro FX 4000|GeForce 7800 GTX|GeForce 7800 GTX|GeForce 7800 GT|GeForce 7800 GS|GeForce 7800 SLI|GeForce Go 7800|GeForce Go 7800 GTX|Quadro FX 4500|GeForce 6800 GS|GeForce 6800|GeForce 6800 LE|GeForce 6800 XT|GeForce Go 6800|GeForce Go 6800 Ultra|Quadro FX Go1400|Quadro FX 3450/4000 SDI|Quadro FX 1400|GeForce 6600 GT|GeForce 6600|GeForce 6200|GeForce 6600 LE|GeForce 7800 GS|GeForce 6800 GS|Quadro FX 3400/Quadro FX 4000|GeForce 6800 Ultra|GeForce 6600 GT|GeForce 6600|GeForce 6600 LE|GeForce 6600 VE|GeForce Go 6600|GeForce 6610 XL|GeForce Go 6600 TE/6200 TE|GeForce 6700 XL|GeForce Go 6600|GeForce Go 6600 GT|Quadro NVS 440|Quadro FX 540M|Quadro FX 550|Quadro FX 540|GeForce 6200|GeForce 6500|GeForce 6200 TurboCache(TM)|GeForce 6200SE TurboCache(TM)|GeForce 6200 LE|GeForce Go 6200|Quadro NVS 285|GeForce Go 6400|GeForce Go 6200|GeForce Go 6400|GeForce 6250|GeForce 7100 GS|GeForce 7350 LE|GeForce 7300 LE|GeForce 7550 LE|GeForce 7300 SE/7200 GS|GeForce Go 7200|GeForce Go 7300|GeForce Go 7400|Quadro NVS 110M|Quadro NVS 120M|Quadro FX 350M|GeForce 7500 LE|Quadro FX 350|GeForce 7300 GS|GeForce 6800|GeForce 6800 LE|GeForce 6800 GT|GeForce 6800 XT|GeForce 6200|GeForce 6200 A-LE|GeForce 6150|GeForce 6150 LE|GeForce 6100|GeForce Go 6150|Quadro NVS 210S / GeForce 6150LE|GeForce Go 6100|GeForce 7900 GTX|GeForce 7900 GT/GTO|GeForce 7900 GS|GeForce 7950 GX2|GeForce 7950 GX2|GeForce 7950 GT|GeForce Go 7950 GTX|GeForce Go 7900 GS|Quadro NVS 510M|Quadro FX 2500M|Quadro FX 1500M|Quadro FX 5500|Quadro FX 3500|Quadro FX 1500|Quadro FX 4500 X2|GeForce 7600 GT|GeForce 7600 GS|GeForce 7300 GT|GeForce 7900 GS|GeForce 7950 GT|GeForce 7650 GS|GeForce 7650 GS|GeForce 7600 GT|GeForce 7600 GS|GeForce 7300 GT|GeForce 7600 LE|GeForce 7300 GT|GeForce Go 7700|GeForce Go 7600|GeForce Go 7600 GT|Quadro FX 560M|Quadro FX 560|GeForce 6150SE nForce 430|GeForce 6100 nForce 405|GeForce 6100 nForce 400|GeForce 6100 nForce 420|GeForce 7025 / nForce 630a|GeForce 7150M / nForce 630M|GeForce 7000M / nForce 610M|GeForce 7050 PV / nForce 630a|GeForce 7050 PV / nForce 630a|GeForce 7025 / nForce 630a|GeForce 7150 / nForce 630i|GeForce 7100 / nForce 630i|GeForce 7050 / nForce 630i|GeForce 7050 / nForce 610i|GeForce 7050 / nForce 620i" - -# get device= from `pciconf -lv | grep -B 4 VGA` -radeon_devices="0x4144|0x4145|0x4146|0x4147|0x4E44|0x4E45|0x4E46|0x4E47|0x4148|0x4149|0x414A|0x414B|0x4E48|0x4E49|0x4E4A|0x4E4B|0x4150|0x4151|0x4152|0x4153|0x4154|0x4155|0x4156|0x4E50|0x4E51|0x4E52|0x4E53|0x4E54|0x4E56|0x3150|0x3151|0x3152|0x3154|0x3155|0x3E50|0x3E54|0x5460|0x5462|0x5464|0x5b60|0x5b62|0x5b63|0x5b64|0x5b65|0x5a41|0x5a42|0x5a61|0x5a62|0x5954|0x5955|0x5974|0x5975|0x4A48|0x4A49|0x4A4A|0x4A4B|0x4A4C|0x4A4D|0x4A4E|0x4A4F|0x4A50|0x4A54|0x4B48|0x4B49|0x4B4A|0x4B4B|0x4B4C|0x5548|0x5549|0x554A|0x554B|0x554C|0x554D|0x554E|0x554F|0x5550|0x5551|0x5552|0x5554|0x5d48|0x5d49|0x5d4a|0x5d4c|0x5d4d|0x5d4e|0x5d4f|0x5d50|0x5d52|0x5d57|0x564A|0x564B|0x564F|0x5652|0x5653|0x5657|0x5e48|0x5e4a|0x5e4b|0x5e4c|0x5e4d|0x5e4f|0x793f|0x7941|0x7942|0x791e|0x791f|0x796c|0x796d|0x796e|0x796f|0x7140|0x7141|0x7142|0x7143|0x7144|0x7145|0x7146|0x7147|0x7149|0x714A|0x714B|0x714C|0x714D|0x714E|0x714F|0x7151|0x7152|0x7153|0x715E|0x715F|0x7180|0x7181|0x7183|0x7186|0x7187|0x7188|0x718A|0x718B|0x718C|0x718D|0x718F|0x7193|0x7196|0x719B|0x719F|0x7200|0x7210|0x7211|0x7100|0x7101|0x7102|0x7103|0x7104|0x7105|0x7106|0x7108|0x7109|0x710A|0x710B|0x710C|0x710E|0x710F|0x71C0|0x71C1|0x71C2|0x71C3|0x71C4|0x71C5|0x71C6|0x71C7|0x71CD|0x71CE|0x71D2|0x71D4|0x71D5|0x71D6|0x71DA|0x71DE|0x7281|0x7283|0x7287|0x7290|0x7291|0x7293|0x7297|0x7280|0x7288|0x7289|0x728B|0x728C|0x7240|0x7243|0x7244|0x7245|0x7246|0x7247|0x7248|0x7249|0x724A|0x724B|0x724C|0x724D|0x724E|0x724F|0x7284|0x9400|0x9401|0x9402|0x9403|0x9405|0x940A|0x940B|0x940F|0x94C0|0x94C1|0x94C3|0x94C4|0x94C5|0x94C6|0x94C7|0x94C8|0x94C9|0x94CB|0x94CC|0x94CD|0x9580|0x9581|0x9583|0x9586|0x9587|0x9588|0x9589|0x958A|0x958B|0x958C|0x958D|0x958E|0x958F|0x95C0|0x95C2|0x95C4|0x95C5|0x95C6|0x95C7|0x95C9|0x95CC|0x95CD|0x95CE|0x95CF|0x9590|0x9591|0x9593|0x9595|0x9596|0x9597|0x9598|0x9599|0x959B|0x9500|0x9501|0x9504|0x9505|0x9506|0x9507|0x9508|0x9509|0x950F|0x9511|0x9515|0x9517|0x9519|0x9610|0x9611|0x9612|0x9613|0x9614|0x9615|0x9616|0x9710|0x9711|0x9712|0x9713|0x9714|0x9715|0x9440|0x9441|0x9442|0x9443|0x9444|0x9446|0x944A|0x944B|0x944C|0x944E|0x9450|0x9452|0x9456|0x945A|0x945B|0x945E|0x9460|0x9462|0x946A|0x946B|0x947A|0x947B|0x9480|0x9487|0x9488|0x9489|0x948A|0x948F|0x9490|0x9491|0x9495|0x9498|0x949C|0x949E|0x949F|0x9540|0x9541|0x9542|0x954E|0x954F|0x9552|0x9553|0x9555|0x9557|0x955f|0x94A0|0x94A1|0x94A3|0x94B1|0x94B3|0x94B4|0x94B5|0x94B9|0x68e0|0x68e1|0x68e4|0x68e5|0x68e8|0x68e9|0x68f1|0x68f2|0x68f8|0x68f9|0x68fa|0x68fe|0x68c0|0x68c1|0x68c7|0x68c8|0x68c9|0x68d8|0x68d9|0x68da|0x68de|0x68a0|0x68a1|0x68a8|0x68a9|0x68b0|0x68b8|0x68b9|0x68ba|0x68be|0x68bf|0x6821|0x6880|0x6888|0x6889|0x688A|0x688C|0x688D|0x6898|0x6899|0x689b|0x689e|0x9802|0x9803|0x9804|0x9805|0x9806|0x9807|0x9808|0x9809|0x980A|0x9640|0x9641|0x9642|0x9643|0x9644|0x9645|0x9647|0x9648|0x9649|0x964a|0x964b|0x964c|0x964e|0x964f|0x9642|0x9643|0x9644|0x9645|0x9649|0x9900|0x9901|0x9903|0x9904|0x9905|0x9906|0x9907|0x9908|0x9909|0x990A|0x990B|0x990C|0x990D|0x990E|0x990F|0x9910|0x9913|0x9917|0x9918|0x9919|0x9990|0x9991|0x9992|0x9993|0x9994|0x9995|0x9996|0x9997|0x9998|0x9999|0x999A|0x999B|0x999C|0x999D|0x99A0|0x99A2|0x99A4|0x6720|0x6721|0x6722|0x6723|0x6724|0x6725|0x6726|0x6727|0x6728|0x6729|0x6738|0x6739|0x673e|0x6740|0x6741|0x6742|0x6743|0x6744|0x6745|0x6746|0x6747|0x6748|0x6749|0x674A|0x6750|0x6751|0x6758|0x6759|0x675B|0x675D|0x675F|0x6840|0x6841|0x6842|0x6843|0x6849|0x6850|0x6858|0x6859|0x6760|0x6761|0x6762|0x6763|0x6764|0x6765|0x6766|0x6767|0x6768|0x6770|0x6771|0x6772|0x6778|0x6779|0x677B|0x515e|0x6660|0x6663|0x6665|0x6900|0x6901|0x6902|0x6903|0x6904|0x1309|0x9874|0x98E4|0x6987|0x681E|0x679E|0x6798|0x6613|0x6066|0x9838" - -# Check to see if NVidia graphics is primary -if pciconf -lv | grep -B 3 VGA | grep -q "NVIDIA"; then - if pciconf -lv | grep -B 3 VGA | grep -q -E "($ndrivers)"; then - NVDRIVER="latest" - fi - if pciconf -lv | grep -B 3 VGA | grep -q -E "($n470drivers)" && [ -z "${NVDRIVER}" ] ; then - NVDRIVER="470" - fi - if pciconf -lv | grep -B 3 VGA | grep -q -E "($n390drivers)" && [ -z "${NVDRIVER}" ] ; then - NVDRIVER="390" - fi - - if pciconf -lv | grep -B 3 VGA | grep -q -E "($n340drivers)" && [ -z "${NVDRIVER}" ]; then - NVDRIVER="340" - fi - if pciconf -lv | grep -B 3 VGA | grep -q -E "($n304drivers)" && [ -z "${NVDRIVER}" ]; then - NVDRIVER="304" - fi -fi - -setup_virtualbox() -{ - echo "Setting up virtualbox settings.. Please wait.." - sysrc vboxguest_enable="YES" - service vboxguest start - sysrc vboxservice_enable="YES" - service vboxservice start +# Complete X Configuration Script for GhostBSD/FreeBSD +# POSIX sh compatible - works with sh, zsh, fish +# Dynamic menu based on detected hardware + +set -e +umask 022 + +# Configuration +SCRIPT_NAME="$(basename "$0")" +SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" +LOG_FILE="/var/log/xconfig.log" +XORG_CONF="/etc/X11/xorg.conf" +BACKUP_DIR="/etc/X11/backup" +CONFIG_DIR="$SCRIPT_DIR/cardDetect" + +# Logging with structured output (stderr-safe for $(...) usage) +log() { + local level="$1"; shift + local timestamp; timestamp=$(date '+%Y-%m-%d %H:%M:%S') + printf "[%s] [%s] %s\n" "$timestamp" "$level" "$*" | tee -a "$LOG_FILE" >&2 } +info() { log "INFO" "$@"; } +warn() { log "WARN" "$@"; } +error() { log "ERROR" "$@"; echo "Error: $*" >&2; } -install_and_setup_nvidia() -{ - echo "Installing and setting up (NVIDIA).. Please wait.." - if [ "${NVDRIVER}" = "latest" ] ; then - if [ -d '/xdrivers' ] ; then - driver=$(grep "nvidia-driver " /xdrivers/drivers-list | cut -d " " -f2) - pkg add "/xdrivers/${driver}" - fi - kldload nvidia-modeset - sysrc -f /etc/rc.conf kldload_nvidia="nvidia-modeset" - elif [ "${NVDRIVER}" = "470" ] ; then - if [ -d '/xdrivers' ] ; then - driver=$(grep "nvidia-driver-470 " /xdrivers/drivers-list | cut -d " " -f2) - pkg add "/xdrivers/${driver}" +# Check root privileges and setup environment +check_environment() { + if [ "$(id -u)" != 0 ]; then + echo "Error: Must be run as root" >&2 + exit 1 fi - kldload nvidia-modeset - sysrc -f /etc/rc.conf kldload_nvidia="nvidia-modeset" - elif [ "${NVDRIVER}" = "390" ] ; then - if [ -d '/xdrivers' ] ; then - driver=$(grep "nvidia-driver-390 " /xdrivers/drivers-list | cut -d " " -f2) - pkg add "/xdrivers/${driver}" + mkdir -p "$(dirname "$LOG_FILE")" "$BACKUP_DIR" + info "Starting $SCRIPT_NAME (PID: $$)" + info "Script directory: $SCRIPT_DIR" + info "Config directory: $CONFIG_DIR" +} + +# Apply external configuration file +apply_external_config() { + local config_name="$1" + local config_file="$CONFIG_DIR/XF86Config.$config_name" + if [ -f "$config_file" ]; then + info "Applying external configuration: $config_file" + backup_config + mkdir -p /etc/X11 + cp "$config_file" "$XORG_CONF" + info "Applied $config_name configuration from external file" + return 0 + else + error "External config file not found: $config_file" + error "Please ensure $config_file exists in $CONFIG_DIR" + return 1 fi - kldload nvidia-modeset - sysrc -f /etc/rc.conf kldload_nvidia="nvidia-modeset" - elif [ "${NVDRIVER}" = "340" ] ; then - if [ -d '/xdrivers' ] ; then - driver=$(grep "nvidia-driver-340 " /xdrivers/drivers-list | cut -d " " -f2) - pkg add "/xdrivers/${driver}" +} + +# Detect all GPUs on the system +detect_all_gpus() { + local pci_brief + pci_brief=$(pciconf -l 2>/dev/null) || { error "Cannot read PCI configuration"; return 1; } + + echo "$pci_brief" | grep "class=0x030000" | while read -r line; do + local device vendor device_id chip + device=$(echo "$line" | awk '{print $1}' | sed 's/:$//') + chip=$(echo "$line" | sed -n 's/.*chip=\(0x[0-9a-fA-F]\{8\}\).*/\1/p') + + if [ -n "$chip" ] && [ "$chip" != "0x00000000" ]; then + local chip_hex="${chip#0x}" + device_id="0x${chip_hex%????}" + vendor="0x${chip_hex#????}" + else + vendor=$(echo "$line" | sed -n 's/.* vendor=\(0x[0-9a-fA-F]*\).*/\1/p') + device_id=$(echo "$line" | sed -n 's/.* device=\(0x[0-9a-fA-F]*\).*/\1/p') + fi + + case "$vendor" in + 0x10de|0x1002|0x8086|0x15ad|0x1234|0x1414) : ;; + *) continue ;; + esac + + if [ -n "$vendor" ] && [ -n "$device_id" ] && [ "$vendor" != "0x0000" ]; then + local card_name + card_name=$(pciconf -lv "$device" 2>/dev/null | awk ' + /^[[:space:]]+device[[:space:]]*=/ { + sub(/^[[:space:]]*device[[:space:]]*=[[:space:]]*'\''?/, "") + sub(/'\''?[[:space:]]*$/, "") + print + exit + }') + printf "%s|%s|%s|%s\n" "$device" "$vendor" "$device_id" "$card_name" + fi + done +} + +# Hardware detection using PCI vendor IDs (returns token like nvidia-470) +detect_hardware() { + local pci_info + pci_info=$(pciconf -lv 2>/dev/null) || { error "Cannot read PCI configuration"; return 1; } + + if echo "$pci_info" | grep -qi "virtualbox"; then echo "virtualbox"; return; fi + if echo "$pci_info" | grep -qi "vmware"; then echo "vmware"; return; fi + if echo "$pci_info" | grep -qi "qemu"; then echo "qemu"; return; fi + if echo "$pci_info" | grep -qi "microsoft.*hyper-v"; then echo "hyperv"; return; fi + + local pci_brief + pci_brief=$(pciconf -l 2>/dev/null | grep "class=0x030000") + [ -z "$pci_brief" ] && { echo "unknown"; return; } + + if echo "$pci_brief" | grep -q "vendor=0x10de"; then + local device_id device_hex + device_id=$(echo "$pci_brief" | grep "vendor=0x10de" | head -1 | sed -n 's/.* device=\(0x[0-9a-fA-F]*\).*/\1/p') + if [ -n "$device_id" ]; then + device_hex=${device_id#0x} + info "NVIDIA device ID: $device_id" + case "$device_hex" in + 2[8-9]*|[3-9]*) echo "nvidia-latest" ;; + 2[6-7]*) echo "nvidia-latest" ;; + 2[2-5]*) echo "nvidia-latest" ;; + 1[e-f]*|20*|21*)echo "nvidia-470" ;; + 1[0-9a-d]*) echo "nvidia-390" ;; + [6-9]*|a*|b*|c*|d*|e*|f*) echo "nvidia-340" ;; + *) echo "nvidia-304" ;; + esac + return + fi fi - kldload nvidia - sysrc -f /etc/rc.conf kldload_nvidia="nvidia" - elif [ "${NVDRIVER}" = "304" ] ; then - if [ -d '/xdrivers' ] ; then - driver=$(grep "nvidia-driver-304 " /xdrivers/drivers-list | cut -d " " -f2) - pkg add "/xdrivers/${driver}" + + if echo "$pci_brief" | grep -q "vendor=0x8086"; then echo "intel"; return; fi + + if echo "$pci_brief" | grep -q "vendor=0x1002"; then + local device_id device_hex + device_id=$(echo "$pci_brief" | grep "vendor=0x1002" | head -1 | sed -n 's/.* device=\(0x[0-9a-fA-F]*\).*/\1/p') + if [ -n "$device_id" ]; then + info "AMD device ID: $device_id" + device_hex=${device_id#0x} + case "$device_hex" in + 6[7-9a-f]*|7*) echo "amdgpu" ;; + *) echo "radeonkms" ;; + esac + return + fi fi - kldload nvidia - sysrc -f /etc/rc.conf kldload_nvidia="nvidia" - fi - X -configure -ignoreABI - sed -i "" 's/"nv"/"nvidia"/g' /root/xorg.conf.new - sed -i "" 's/scfb/nvidia/g' /root/xorg.conf.new - sed -i "" 's/vesa/nvidia/g' /root/xorg.conf.new - sed -i "" 's/modesetting/nvidia/g' /root/xorg.conf.new - # Add workaround for ABI problem - printf ' -Section "ServerFlags" - Option "IgnoreABI" "1" -EndSection -' >> /root/xorg.conf.new - mkdir -p /etc/X11 - cp /root/xorg.conf.new /etc/X11/xorg.conf -} -setup_nvidia() -{ - echo "Setting up (NVIDIA).. Please wait.." - sysrc -f /etc/rc.conf kldload_nvidia="nvidia-modeset" - kldload nvidia-modeset - X -configure -ignoreABI - sed -i "" 's/"nv"/"nvidia"/g' /root/xorg.conf.new - sed -i "" 's/scfb/nvidia/g' /root/xorg.conf.new - sed -i "" 's/vesa/nvidia/g' /root/xorg.conf.new - mkdir -p /etc/X11 - cp /root/xorg.conf.new /etc/X11/xorg.conf + if echo "$pci_brief" | grep -q "vendor=0x15ad"; then echo "vmware"; return; fi + if echo "$pci_brief" | grep -q "vendor=0x1234"; then echo "qemu"; return; fi + if echo "$pci_brief" | grep -q "vendor=0x1414"; then echo "hyperv"; return; fi + + echo "unknown" } -setup_intel_drm() -{ - echo "Setting up (Intel DRM).. Please wait.." - kldload /boot/modules/i915kms.ko - sysrc -f /etc/rc.conf kld_list+="/boot/modules/i915kms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/amdgpu.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/radeonkms.ko" +# Classify GPU by vendor and device ID (returns driver family for menu options) +classify_gpu() { + local vendor="$1" device_id="$2" + case "$vendor" in + 0x10de) + local device_hex=${device_id#0x} + case "$device_hex" in + 2[8-9]*|[3-9]*) echo "nvidia-latest" ;; + 2[6-7]*) echo "nvidia-latest" ;; + 2[2-5]*) echo "nvidia-latest" ;; + 1[e-f]*|20*|21*)echo "nvidia-470" ;; + 1[0-9a-d]*) echo "nvidia-390" ;; + [6-9]*|a*|b*|c*|d*|e*|f*) echo "nvidia-340" ;; + *) echo "nvidia-304" ;; + esac + ;; + 0x8086) echo "intel" ;; + 0x1002) + local device_hex=${device_id#0x} + case "$device_hex" in + 6[7-9a-f]*|7*) echo "amdgpu" ;; + *) echo "radeonkms" ;; + esac + ;; + 0x15ad) echo "vmware" ;; + 0x1234) echo "qemu" ;; + 0x1414) echo "hyperv" ;; + *) echo "unknown" ;; + esac } -start_legacy_intel() -{ - echo "Setting up (Legacy Intel).. Please wait.." - kldload /boot/modules/i915kms.ko - sysrc -f /etc/rc.conf kld_list-="/boot/modules/i915kms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/amdgpu.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/radeonkms.ko" +# Build dynamic menu based on detected hardware +build_dynamic_menu() { + local hw_type="$1" all_gpus="$2" + echo "auto|Auto-detect (recommended)" + + if [ -n "$all_gpus" ]; then + local gpu_num=0 + echo "$all_gpus" > /tmp/xconfig_gpus_list + while IFS='|' read -r device vendor device_id card_name; do + gpu_num=$((gpu_num + 1)) + local gpu_type friendly_name driver_ver + gpu_type=$(classify_gpu "$vendor" "$device_id") + case "$vendor" in + 0x10de) friendly_name="NVIDIA" ;; + 0x8086) friendly_name="Intel" ;; + 0x1002) friendly_name="AMD" ;; + *) friendly_name="GPU" ;; + esac + case "$gpu_type" in + nvidia-*) + driver_ver=$(echo "$gpu_type" | cut -d'-' -f2) + echo "gpu${gpu_num}-nvidia-${driver_ver}|$friendly_name GPU $gpu_num ($driver_ver)" + ;; + intel) + echo "gpu${gpu_num}-intel|$friendly_name GPU $gpu_num (config)" + echo "gpu${gpu_num}-intel-auto|$friendly_name GPU $gpu_num (auto)" + ;; + amdgpu) + echo "gpu${gpu_num}-amdgpu|$friendly_name GPU $gpu_num (amdgpu)" + echo "gpu${gpu_num}-radeonkms|$friendly_name GPU $gpu_num (radeonkms)" + ;; + radeonkms) + echo "gpu${gpu_num}-radeonkms|$friendly_name GPU $gpu_num (radeonkms)" + echo "gpu${gpu_num}-amdgpu|$friendly_name GPU $gpu_num (amdgpu)" + ;; + esac + done < /tmp/xconfig_gpus_list + rm -f /tmp/xconfig_gpus_list + fi + + case "$hw_type" in + virtualbox) echo "virtualbox|VirtualBox guest" ;; + vmware) echo "vmware|VMware guest" ;; + qemu) echo "qemu|QEMU guest" ;; + hyperv) echo "hyperv|Hyper-V guest" ;; + esac + + echo "scfb|SCFB framebuffer" + echo "vesa|VESA (safe mode)" + echo "safe|Safe/recovery mode" + echo "dual|Dual monitor" + echo "exit|Exit" } -setup_amdgpu_radeonkms_drm() -{ - if pciconf -lv | grep -B 4 VGA | grep -q -E "($radeon_devices)"; then - echo "Setting up (radeonkms).. Please wait.." - kldload /boot/modules/radeonkms.ko - sysrc -f /etc/rc.conf kld_list+="/boot/modules/radeonkms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/amdgpu.ko" - else - echo "Setting up (amdgpu).. Please wait.." - kldload /boot/modules/amdgpu.ko - sysrc -f /etc/rc.conf kld_list+="/boot/modules/amdgpu.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/radeonkms.ko" - fi - sysrc -f /etc/rc.conf kld_list-="/boot/modules/i915kms.ko" +# Backup existing configuration +backup_config() { + if [ -f "$XORG_CONF" ]; then + local backup_name="xorg.conf.$(date +%Y%m%d_%H%M%S)" + cp "$XORG_CONF" "$BACKUP_DIR/$backup_name" + info "Backed up existing config to $BACKUP_DIR/$backup_name" + fi } -setup_radeonkms_drm() -{ - echo "Setting up (radeonkms).. Please wait.." - kldload /boot/modules/radeonkms.ko - sysrc -f /etc/rc.conf kld_list+="/boot/modules/radeonkms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/i915kms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/amdgpu.ko" +# Ensure Linux compatibility for NVIDIA +ensure_linux_compatibility() { + if ! sysrc -n linux_enable 2>/dev/null | grep -q "YES"; then + info "Enabling Linux compatibility layer"; sysrc linux_enable="YES" || warn "Failed to enable Linux compatibility" + fi + if ! kldstat | grep -q "linux"; then + info "Loading Linux compatibility module" + kldload linux 2>/dev/null || kldload linux.ko 2>/dev/null || warn "Failed to load Linux module" + fi } -setup_amdgpu_drm() -{ - echo "Setting up (amdgpu).. Please wait.." - kldload /boot/modules/amdgpu.ko - sysrc -f /etc/rc.conf kld_list+="/boot/modules/amdgpu.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/radeonkms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/i915kms.ko" +# Append to kld_list safely (avoid duplicates) +append_kld_list() { + local mod="$1" cur; cur=$(sysrc -n kld_list 2>/dev/null || echo "") + case " $cur " in *" $mod "*) : ;; *) sysrc kld_list="$cur $mod" >/dev/null ;; esac } -start_radeonkms() -{ - echo "Setting up (radeonkms).. Please wait.." - kldunload /boot/modules/amdgpu.ko - kldunload /boot/modules/radeonkms.ko - kldunload /boot/modules/i915kms.ko - sysrc -f /etc/rc.conf kld_list-="/boot/modules/amdgpu.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/radeonkms.ko" - sysrc -f /etc/rc.conf kld_list-="/boot/modules/i915kms.ko" - X -configure - sed -i "" 's/amdgpu/radeon/g' /root/xorg.conf.new - sed -i "" 's/scfb/radeon/g' /root/xorg.conf.new - sed -i "" 's/vesa/radeon/g' /root/xorg.conf.new - mkdir -p /etc/X11 - cp /root/xorg.conf.new /etc/X11/xorg.conf +# Load NVIDIA kernel module (idempotent; tolerate "already loaded" and busy unloads) +load_nvidia_module() { + local module_name="$1" + info "Loading NVIDIA module: $module_name" + + if kldstat -qn "$module_name"; then + info "Module $module_name already loaded" + append_kld_list "$module_name" + return 0 + fi + + for mod in amdgpu radeonkms i915kms nvidia nvidia-modeset; do + [ "$mod" = "$module_name" ] && continue + if kldstat | grep -q "\\b$mod\\b"; then + kldunload "$mod" 2>/dev/null || warn "Could not unload $mod (possibly in use)" + fi + done + + if kldload "$module_name" 2>/tmp/kldload.err; then + append_kld_list "$module_name" + info "Module $module_name loaded successfully" + rm -f /tmp/kldload.err + return 0 + else + if kldstat -qn "$module_name"; then + append_kld_list "$module_name" + info "Module $module_name appears loaded despite kldload error (continuing)" + rm -f /tmp/kldload.err + return 0 + fi + if grep -qi "already loaded" /tmp/kldload.err 2>/dev/null; then + append_kld_list "$module_name" + info "Module $module_name already loaded (from kldload message)" + rm -f /tmp/kldload.err + return 0 + fi + error "Failed to load NVIDIA module: $module_name" + [ -s /tmp/kldload.err ] && error "kldload: $(tr '\n' ' ' /dev/null 2>&1; then + info "NVIDIA driver $pkg_name already installed"; return 0; fi + ensure_linux_compatibility + if [ -d "/xdrivers" ] && [ -f "/xdrivers/drivers-list" ]; then + local driver_file + driver_file=$(grep "^$pkg_name " /xdrivers/drivers-list 2>/dev/null | cut -d' ' -f2) + if [ -n "$driver_file" ] && [ -f "/xdrivers/$driver_file" ]; then + info "Installing $pkg_name from /xdrivers" + if pkg add "/xdrivers/$driver_file"; then return 0; else warn "Failed to install from /xdrivers, trying repository"; fi + fi + fi + info "Installing $pkg_name from repository" + if pkg install -y "$pkg_name"; then info "Successfully installed $pkg_name"; return 0; fi + error "Failed to install $pkg_name" + error "Available NVIDIA drivers:"; pkg search "^nvidia-driver-" 2>/dev/null | while read -r line; do error " $line"; done + return 1 } -start_shell() -{ - clear - echo "# GhostBSD Emergency Shell -# -# Please type 'exit' to return to the menu -#############################################################" - /usr/local/bin/fish +# Generate NVIDIA X configuration (with fallback) +generate_nvidia_config() { + info "Generating NVIDIA X configuration" + backup_config + + if X -configure -ignoreABI >/tmp/nvidia-config.log 2>&1; then + if [ -f /root/xorg.conf.new ]; then + sed -i.bak \ + -e 's/"nv"/"nvidia"/g' \ + -e 's/"vesa"/"nvidia"/g' \ + -e 's/"scfb"/"nvidia"/g' \ + -e 's/"modesetting"/"nvidia"/g' \ + /root/xorg.conf.new + + cat >> /root/xorg.conf.new << 'EOF' + +Section "ServerFlags" + Option "IgnoreABI" "1" +EndSection +EOF + mkdir -p /etc/X11 + cp /root/xorg.conf.new "$XORG_CONF" + info "NVIDIA X configuration generated successfully" + return 0 + fi + fi + + warn "X -configure failed; creating minimal NVIDIA config" + mkdir -p /etc/X11 + cat > "$XORG_CONF" << 'EOF' +Section "Device" + Identifier "Nvidia Card" + Driver "nvidia" + Option "IgnoreABI" "1" +EndSection +EOF + info "Minimal NVIDIA X configuration written to $XORG_CONF" + return 0 } -manual_setup() -{ - dialog --title "X Configuration Menu" \ - --menu "Please select from the following options:" 20 55 15 \ - drm_intel "Start Desktop with Intel DRM driver" \ - amdgpu "Start Desktop with AMD GPU driver" \ - radeonkms "Start Desktop with Radeon KMS driver" \ - nvidia "Start Desktop with Nvidia ${NVERSION} driver" \ - vesa "Start Desktop with VESA driver" \ - scfb "Start Desktop with SCFB driver" \ - virtualbox "Start Desktop with VirtualBox driver" \ - shell "Drop to emergency shell" \ - reboot "Reboot the system" \ - exit "Exit X Configuration" 2>/tmp/answer - - ANS="$(cat /tmp/answer)" - case $ANS in - nvidia) install_and_setup_nvidia ;; - drm_intel) setup_intel_drm ;; - amdgpu) start_amdgpu ;; - radeonkms) start_radeonkms ;; - vesa) echo "Setting up (VESA).. Please wait.." - mkdir -p /etc/X11 - cp /usr/local/etc/X11/cardDetect/XF86Config.vesa /etc/X11/xorg.conf - ;; - scfb) echo "Setting up (SCFB).. Please wait.." - mkdir -p /etc/X11 - cp /usr/local/etc/X11/cardDetect/XF86Config.scfb /etc/X11/xorg.conf - ;; - virtualbox) setup_virtualbox ;; - shell) start_shell ;; - reboot) sudo reboot -q ;; - exit) exit 0 ;; - *) ;; - esac +# NVIDIA driver setup +setup_nvidia() { + local driver_type="$1" pkg_name module_name + info "Setting up NVIDIA driver: $driver_type" + + case "$driver_type" in + nvidia-latest) pkg_name="nvidia-driver-580"; module_name="nvidia-modeset" ;; + nvidia-470) pkg_name="nvidia-driver-470"; module_name="nvidia-modeset" ;; + nvidia-390) pkg_name="nvidia-driver-390"; module_name="nvidia-modeset" ;; + nvidia-340) pkg_name="nvidia-driver-340"; module_name="nvidia" ;; + nvidia-304) pkg_name="nvidia-driver-304"; module_name="nvidia" ;; + nvidia-devel) pkg_name="nvidia-driver-devel"; module_name="nvidia-modeset" ;; + *) error "Unknown NVIDIA driver type: $driver_type"; return 1 ;; + esac + + install_nvidia_driver "$pkg_name" || { error "Failed to install $pkg_name"; return 1; } + load_nvidia_module "$module_name" || { error "Failed to load $module_name"; return 1; } + generate_nvidia_config || { error "Failed to generate NVIDIA X configuration"; return 1; } + + info "NVIDIA setup completed successfully" + return 0 } -fail_safe() -{ - dialog --title "Failed to auto start X" \ - --menu "Please select from the following options:" 20 55 15 \ - intel "Start Desktop with Legacy Intel driver" \ - amdgpu "Start Desktop with DRM AMDGPU driver" \ - radeonkmsdrm "Start Desktop with DRM Radeon KMS driver" \ - vesa "Start Desktop with VESA driver" \ - scfb "Start Desktop with SCFB driver" \ - shell "Drop to emergency shell" \ - reboot "Reboot the system" \ - exit "Exit X Configuration" 2>/tmp/answer - - ANS="$(cat /tmp/answer)" - case $ANS in - amdgpudrm) setup_amdgpu_drm ;; - radeonkmsdrm) setup_radeonkms_drm ;; - vesa) echo "Setting up (VESA).. Please wait.." - mkdir -p /etc/X11 - cp /usr/local/etc/X11/cardDetect/XF86Config.vesa /etc/X11/xorg.conf - ;; - scfb) echo "Setting up (SCFB).. Please wait.." - mkdir -p /etc/X11 - cp /usr/local/etc/X11/cardDetect/XF86Config.scfb /etc/X11/xorg.conf - ;; - virtualbox) setup_virtualbox ;; - shell) start_shell ;; - reboot) sudo reboot -q ;; - exit) exit 0 ;; - *) ;; - esac +# Intel graphics setup (auto-detection) +setup_intel() { + info "Setting up Intel graphics (auto-detection)" + backup_config + for mod in amdgpu radeonkms nvidia nvidia-modeset; do + if kldstat | grep -q "\\b$mod\\b"; then kldunload "$mod" 2>/dev/null || true; fi + done + if kldload i915kms >/dev/null 2>&1; then + append_kld_list "i915kms" + info "Intel i915kms module loaded successfully" + rm -f "$XORG_CONF" + info "Intel graphics setup completed (using auto-detection)" + return 0 + else + warn "Failed to load i915kms module, trying auto-detection" + rm -f "$XORG_CONF" + return 0 + fi } -auto_configure_x() -{ - if [ -z "${NVDRIVER}" ] ; then - # First check if we are running as a VirtualBox guest - if pciconf -lv | grep -q "VirtualBox" ; then - setup_virtualbox +# Intel graphics setup with config file +setup_intel_config() { + info "Setting up Intel graphics with external configuration" + backup_config + for mod in amdgpu radeonkms nvidia nvidia-modeset; do + if kldstat | grep -q "\\b$mod\\b"; then kldunload "$mod" 2>/dev/null || true; fi + done + if kldload i915kms >/dev/null 2>&1; then + append_kld_list "i915kms" + info "Intel i915kms module loaded successfully" + if apply_external_config "intel"; then + return 0 + else + warn "Failed to apply Intel config, falling back to auto-detection" + rm -f "$XORG_CONF" + return 0 + fi else - # Uninstall virtualbox-ose-additions since we are not runing on virtualbox - pkg delete -y virtualbox-ose-additions - # Check to see if we are running as VMware guest - pciconf -lv | grep -q "vmware" - if pciconf -lv | grep -q "vmware" ; then - mkdir -p /etc/X11 - cp /usr/local/etc/X11/cardDetect/XF86Config.vmware /etc/X11/xorg.conf - else - pciconf -lv | grep -B 4 VGA | grep -q Intel - if pciconf -lv | grep -B 4 VGA | grep -q Intel ; then - setup_intel_drm + error "Failed to load i915kms module" + return 1 + fi +} + +# AMD graphics setup +setup_amd() { + local driver_type="$1" + info "Setting up AMD graphics with $driver_type driver" + backup_config + for mod in amdgpu radeonkms i915kms nvidia nvidia-modeset; do + if kldstat | grep -q "\\b$mod\\b"; then kldunload "$mod" 2>/dev/null || true; fi + done + if kldload "$driver_type" >/dev/null 2>&1; then + append_kld_list "$driver_type" + info "AMD $driver_type module loaded successfully" + if apply_external_config "$driver_type"; then + return 0 else - pciconf -lv | grep -B 4 VGA | grep -q 'AMD/ATI' - if pciconf -lv | grep -B 4 VGA | grep -q 'AMD/ATI' ; then - setup_amdgpu_radeonkms_drm - else - fail_safe - fi + warn "Failed to apply AMD config, falling back to auto-detection" + rm -f "$XORG_CONF" + return 0 fi - fi + else + error "Failed to load $driver_type module" + return 1 + fi +} + +# Guest setups and fallbacks +setup_hyperv() { info "Setting up Microsoft Hyper-V guest graphics"; apply_external_config "hyperv"; } +setup_safe() { info "Setting up safe mode configuration (minimal/recovery)"; apply_external_config "safe"; } +setup_dual() { info "Setting up dual monitor configuration template"; apply_external_config "dual"; } +setup_virtualbox(){ + info "Setting up VirtualBox guest graphics" + sysrc vboxguest_enable="YES" >/dev/null || warn "Failed to enable vboxguest" + sysrc vboxservice_enable="YES" >/dev/null || warn "Failed to enable vboxservice" + service vboxguest status >/dev/null 2>&1 || service vboxguest start || warn "Failed to start vboxguest" + service vboxservice status >/dev/null 2>&1 || service vboxservice start || warn "Failed to start vboxservice" + apply_external_config "virtualbox" +} +setup_vmware() { info "Setting up VMware guest graphics"; apply_external_config "vmware"; } +setup_qemu() { info "Setting up QEMU guest graphics"; apply_external_config "qemu"; } +setup_scfb() { info "Setting up SCFB graphics (FreeBSD syscons framebuffer)"; apply_external_config "scfb"; } +setup_vesa() { info "Setting up VESA graphics (safe mode)"; apply_external_config "vesa"; } + +# Auto configuration (now with clean GPU names in logs + explicit chosen path) +auto_configure() { + info "Starting automatic X configuration" + + local hw_type all_gpus gpu_count gpu_names + hw_type=$(detect_hardware) + all_gpus=$(detect_all_gpus) + + gpu_count=0 + gpu_names="" + if [ -n "$all_gpus" ]; then + gpu_count=$(echo "$all_gpus" | wc -l | tr -d ' ') + gpu_names=$(echo "$all_gpus" | cut -d'|' -f4 | paste -sd ", " -) + fi + + info "Detected hardware: $hw_type" + info "GPUs detected: $gpu_count" + [ -n "$gpu_names" ] && info "GPU list: $gpu_names" + + case "$hw_type" in + virtualbox) info "Chosen path: VirtualBox guest"; setup_virtualbox ;; + vmware) info "Chosen path: VMware guest"; setup_vmware ;; + qemu) info "Chosen path: QEMU guest"; setup_qemu ;; + hyperv) info "Chosen path: Hyper-V guest"; setup_hyperv ;; + nvidia-*) info "Chosen path: NVIDIA ($hw_type)"; setup_nvidia "$hw_type" ;; + intel) info "Chosen path: Intel (auto)"; setup_intel ;; + amdgpu) info "Chosen path: AMD (amdgpu)"; setup_amd "amdgpu" ;; + radeonkms) info "Chosen path: AMD (radeonkms)"; setup_amd "radeonkms" ;; + *) warn "Chosen path: Unknown → VESA fallback"; setup_vesa ;; + esac +} + +# Manual setup (clean GPU names in header + explicit selected path logs) +manual_setup() { + info "Starting manual setup" + + local DIALOG_CMD="" + if command -v bsddialog >/dev/null 2>&1; then + DIALOG_CMD="bsddialog"; info "Using bsddialog for menu interface" + elif command -v dialog >/dev/null 2>&1; then + DIALOG_CMD="dialog"; info "Using dialog for menu interface" + else + error "Neither dialog nor bsddialog available for manual setup" + return 1 + fi + + local hw_type all_gpus gpu_count gpu_names + hw_type=$(detect_hardware) + all_gpus=$(detect_all_gpus) + + gpu_count=0 + gpu_names="" + if [ -n "$all_gpus" ]; then + gpu_count=$(echo "$all_gpus" | wc -l | tr -d ' ') + gpu_names=$(echo "$all_gpus" | cut -d'|' -f4 | paste -sd ", " -) + fi + + info "Detected hardware type: $hw_type" + info "Found $gpu_count GPU(s)" + + build_dynamic_menu "$hw_type" "$all_gpus" > /tmp/xconfig_menu_data + if [ ! -s /tmp/xconfig_menu_data ]; then error "Menu data file not created!"; return 1; fi + + set -- + while IFS='|' read -r tag item; do + [ -n "$tag" ] && [ -n "$item" ] || continue + set -- "$@" "$tag" "$item" + done < /tmp/xconfig_menu_data + if [ "$#" -eq 0 ]; then error "Failed to build menu - no options generated"; rm -f /tmp/xconfig_menu_data; return 1; fi + + local menu_item_count=$(( $# / 2 )) + local menu_rows=$menu_item_count; [ $menu_rows -gt 15 ] && menu_rows=15 + local dialog_height=$((menu_rows + 8)); [ $dialog_height -lt 15 ] && dialog_height=15 + + local header="Detected: $hw_type | GPUs: $gpu_count" + if [ -n "$gpu_names" ]; then + header="$header\nGPUs: $gpu_names" + fi + + local choice + choice=$($DIALOG_CMD --title "X Configuration" \ + --menu "$header\n\nSelect configuration:" \ + "$dialog_height" 70 "$menu_rows" "$@" 3>&1 1>&2 2>&3) + local exit_code=$? + if [ $exit_code -ne 0 ]; then + info "User cancelled menu" + rm -f /tmp/xconfig_menu_data + return 1 + fi + + case "$choice" in + auto) + info "User selection: Auto-detect" + if auto_configure; then $DIALOG_CMD --msgbox "Automatic configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "Automatic configuration failed." 6 70; fi + ;; + gpu*-nvidia-*) + local driver_ver; driver_ver=$(echo "$choice" | sed 's/.*nvidia-//') + info "User selection: NVIDIA (nvidia-$driver_ver)" + if setup_nvidia "nvidia-$driver_ver"; then $DIALOG_CMD --msgbox "NVIDIA GPU configured successfully!" 6 70 + else $DIALOG_CMD --msgbox "NVIDIA configuration failed." 6 70; fi + ;; + gpu*-intel) + info "User selection: Intel (with config)" + if setup_intel_config; then $DIALOG_CMD --msgbox "Intel GPU configured successfully!" 6 70 + else $DIALOG_CMD --msgbox "Intel configuration failed." 6 70; fi + ;; + gpu*-intel-auto) + info "User selection: Intel (auto)" + if setup_intel; then $DIALOG_CMD --msgbox "Intel GPU configured successfully!" 6 70 + else $DIALOG_CMD --msgbox "Intel configuration failed." 6 70; fi + ;; + gpu*-amdgpu|gpu*-radeonkms) + local driver_type; driver_type=$(echo "$choice" | sed 's/gpu[0-9]*-//') + info "User selection: AMD ($driver_type)" + if setup_amd "$driver_type"; then $DIALOG_CMD --msgbox "AMD GPU configured successfully!" 6 70 + else $DIALOG_CMD --msgbox "AMD configuration failed." 6 70; fi + ;; + scfb) + info "User selection: SCFB" + if setup_scfb; then $DIALOG_CMD --msgbox "SCFB configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "SCFB configuration failed." 6 70; fi + ;; + vesa) + info "User selection: VESA" + if setup_vesa; then $DIALOG_CMD --msgbox "VESA configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "VESA configuration failed." 6 70; fi + ;; + safe) + info "User selection: Safe mode" + if setup_safe; then $DIALOG_CMD --msgbox "Safe mode configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "Safe mode configuration failed." 6 70; fi + ;; + virtualbox) + info "User selection: VirtualBox guest" + if setup_virtualbox; then $DIALOG_CMD --msgbox "VirtualBox configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "VirtualBox configuration failed." 6 70; fi + ;; + vmware) + info "User selection: VMware guest" + if setup_vmware; then $DIALOG_CMD --msgbox "VMware configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "VMware configuration failed." 6 70; fi + ;; + qemu) + info "User selection: QEMU guest" + if setup_qemu; then $DIALOG_CMD --msgbox "QEMU configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "QEMU configuration failed." 6 70; fi + ;; + hyperv) + info "User selection: Hyper-V guest" + if setup_hyperv; then $DIALOG_CMD --msgbox "Hyper-V configuration successful!" 6 70 + else $DIALOG_CMD --msgbox "Hyper-V configuration failed." 6 70; fi + ;; + dual) + info "User selection: Dual monitor template" + if setup_dual; then $DIALOG_CMD --msgbox "Dual monitor template applied successfully!\nYou may need to adjust monitor names." 8 70 + else $DIALOG_CMD --msgbox "Dual monitor configuration failed." 6 70; fi + ;; + exit) + info "User selection: Exit" + ;; + esac + + rm -f /tmp/xconfig_menu_data +} + +# Debug/check system state (clean GPU names) +check_system_state() { + info "=== System State Check ===" + local fbsd_version; fbsd_version=$(freebsd-version 2>/dev/null || uname -r) + info "FreeBSD version: $fbsd_version" + + if [ -d "$CONFIG_DIR" ]; then + info "Configuration directory: $CONFIG_DIR" + else + warn "Configuration directory not found: $CONFIG_DIR" + fi + + local all_gpus gpu_count gpu_names + all_gpus=$(detect_all_gpus) + if [ -n "$all_gpus" ]; then + gpu_count=$(echo "$all_gpus" | wc -l | tr -d ' ') + gpu_names=$(echo "$all_gpus" | cut -d'|' -f4 | paste -sd ", " -) + info "GPUs detected: $gpu_count" + info "GPU list: $gpu_names" + else + warn "No GPUs detected" + fi + + if [ -f "$XORG_CONF" ]; then + info "Current X configuration: EXISTS" + grep -E "Driver|Identifier" "$XORG_CONF" 2>/dev/null | while read -r line; do info " $line"; done + else + info "Current X configuration: NOT FOUND (using auto-detection)" fi - else - # Uninstall virtualbox-ose-additions since we are not runing on virtualbox - pkg delete -y virtualbox-ose-additions - # If Intel is detected that mean the system is running on Optimus hardware. - # For now start with Intel DRM driver. - # In the future nvidia-hybrid-graphics need to be implemented. - pciconf -lv | grep -B 4 VGA | grep -q Intel - # if pciconf -lv | grep -B 4 VGA | grep -q Intel ; then - # setup_intel_drm - # else - install_and_setup_nvidia - # fi - fi } -if [ "${TOSTART}" = 'setup' ] ; then - manual_setup -elif [ "${TOSTART}" = 'auto' ]; then - auto_configure_x -else - manual_setup -fi +# Main +main() { + local mode="${1:-auto}" + check_environment + info "X configuration mode: $mode" + + case "$mode" in + auto) auto_configure ;; + setup|manual) manual_setup ;; + nvidia|intel|intel-auto|amd|scfb|vesa|safe|virtualbox|vmware|qemu|hyperv|dual) + case "$mode" in + nvidia) local nvidia_driver; nvidia_driver=$(detect_hardware); info "Direct path: NVIDIA ($nvidia_driver)"; setup_nvidia "$nvidia_driver" ;; + intel) info "Direct path: Intel (with config)"; setup_intel_config ;; + intel-auto) info "Direct path: Intel (auto)"; setup_intel ;; + amd) local amd_driver; amd_driver=$(detect_hardware); info "Direct path: AMD ($amd_driver)"; setup_amd "$amd_driver" ;; + scfb) info "Direct path: SCFB"; setup_scfb ;; + vesa) info "Direct path: VESA"; setup_vesa ;; + safe) info "Direct path: Safe mode"; setup_safe ;; + virtualbox) info "Direct path: VirtualBox"; setup_virtualbox ;; + vmware) info "Direct path: VMware"; setup_vmware ;; + qemu) info "Direct path: QEMU"; setup_qemu ;; + hyperv) info "Direct path: Hyper-V"; setup_hyperv ;; + dual) info "Direct path: Dual monitor"; setup_dual ;; + esac + ;; + debug|check) check_system_state ;; + *) + echo "Usage: $0 [auto|setup|manual|nvidia|intel|intel-auto|amd|scfb|vesa|safe|virtualbox|vmware|qemu|hyperv|dual|debug]" >&2 + exit 1 + ;; + esac +} + +main "$@" + diff --git a/cardDetect/XF86Config.amdgpu b/cardDetect/XF86Config.amdgpu new file mode 100644 index 0000000..7fb0cf7 --- /dev/null +++ b/cardDetect/XF86Config.amdgpu @@ -0,0 +1,93 @@ +# AMD AMDGPU graphics xorg.conf file for GhostBSD/FreeBSD +# For modern AMD Radeon graphics cards with amdgpu kernel module + +Section "ServerLayout" + Identifier "AMDGPU Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" + Load "dri3" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "AMD AMDGPU Monitor" + HorizSync 28.0 - 96.0 + VertRefresh 50.0 - 75.0 + Option "DPMS" +EndSection + +Section "Device" + Identifier "Card0" + Driver "amdgpu" + Option "AccelMethod" "glamor" + Option "DRI" "3" + Option "TearFree" "true" + Option "VariableRefresh" "true" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "2560x1440" "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "2560x1440" "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "2560x1440" "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" + EndSubSection +EndSection + +Section "DRI" + Mode 0666 +EndSection diff --git a/cardDetect/XF86Config.dual b/cardDetect/XF86Config.dual new file mode 100644 index 0000000..4d30956 --- /dev/null +++ b/cardDetect/XF86Config.dual @@ -0,0 +1,154 @@ +# Dual monitor xorg.conf template for GhostBSD/FreeBSD +# Configure for side-by-side monitor setup + +Section "ServerLayout" + Identifier "Dual Monitor Setup" + Screen 0 "Screen0" 0 0 + Screen 1 "Screen1" RightOf "Screen0" + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "Xinerama" "true" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "Primary Monitor" + HorizSync 28.0 - 96.0 + VertRefresh 50.0 - 75.0 + Option "DPMS" + Option "Primary" "true" +EndSection + +Section "Monitor" + Identifier "Monitor1" + VendorName "Generic Monitor" + ModelName "Secondary Monitor" + HorizSync 28.0 - 96.0 + VertRefresh 50.0 - 75.0 + Option "DPMS" +EndSection + +Section "Device" + Identifier "Card0" + Driver "intel" + Screen 0 + Option "AccelMethod" "sna" + Option "TearFree" "true" + Option "DRI" "3" + Option "Monitor-VGA1" "Monitor0" + Option "Monitor-HDMI1" "Monitor1" +EndSection + +Section "Device" + Identifier "Card1" + Driver "intel" + Screen 1 + Option "AccelMethod" "sna" + Option "TearFree" "true" + Option "DRI" "3" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1280x1024" "1024x768" + Virtual 3840 1080 + EndSubSection +EndSection + +Section "Screen" + Identifier "Screen1" + Device "Card1" + Monitor "Monitor1" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1280x1024" "1024x768" + EndSubSection +EndSection + +Section "DRI" + Mode 0666 +EndSection + +# Alternative single-card dual-output configuration +# Uncomment and modify the sections below if using one graphics card with two outputs +# +# Section "Device" +# Identifier "Card0" +# Driver "intel" # or "amdgpu", "radeon", "nvidia" +# Option "AccelMethod" "sna" +# Option "TearFree" "true" +# Option "DRI" "3" +# Option "ZaphodHeads" "VGA1,HDMI1" # Adjust output names as needed +# EndSection +# +# Section "Screen" +# Identifier "Screen0" +# Device "Card0" +# Monitor "Monitor0" +# DefaultDepth 24 +# SubSection "Display" +# Viewport 0 0 +# Depth 24 +# Modes "1920x1080" "1680x1050" "1600x1200" "1280x1024" "1024x768" +# EndSubSection +# EndSection +# +# Section "Screen" +# Identifier "Screen1" +# Device "Card0" +# Monitor "Monitor1" +# DefaultDepth 24 +# SubSection "Display" +# Viewport 0 0 +# Depth 24 +# Modes "1920x1080" "1680x1050" "1600x1200" "1280x1024" "1024x768" +# EndSubSection +# EndSection diff --git a/cardDetect/XF86Config.hyperv b/cardDetect/XF86Config.hyperv new file mode 100644 index 0000000..b71fa44 --- /dev/null +++ b/cardDetect/XF86Config.hyperv @@ -0,0 +1,85 @@ +# Microsoft Hyper-V guest xorg.conf file for GhostBSD/FreeBSD + +Section "ServerLayout" + Identifier "Hyper-V Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Microsoft Corporation" + ModelName "Hyper-V Virtual Monitor" + HorizSync 1.0 - 10000.0 + VertRefresh 1.0 - 10000.0 + Option "DPMS" +EndSection + +Section "Device" + Identifier "Card0" + Driver "scfb" + Option "ShadowFB" "true" + Option "Rotate" "off" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection +EndSection diff --git a/cardDetect/XF86Config.intel b/cardDetect/XF86Config.intel new file mode 100644 index 0000000..b367deb --- /dev/null +++ b/cardDetect/XF86Config.intel @@ -0,0 +1,93 @@ +# Intel graphics xorg.conf file for GhostBSD/FreeBSD +# For use with i915kms kernel module + +Section "ServerLayout" + Identifier "Intel Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" + Load "dri3" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "Intel Graphics Monitor" + HorizSync 28.0 - 96.0 + VertRefresh 50.0 - 75.0 + Option "DPMS" +EndSection + +Section "Device" + Identifier "Card0" + Driver "intel" + Option "AccelMethod" "sna" + Option "TearFree" "true" + Option "DRI" "3" + Option "Backlight" "intel_backlight" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection +EndSection + +Section "DRI" + Mode 0666 +EndSection diff --git a/cardDetect/XF86Config.qemu b/cardDetect/XF86Config.qemu index b193e67..dc97fb0 100644 --- a/cardDetect/XF86Config.qemu +++ b/cardDetect/XF86Config.qemu @@ -1,11 +1,85 @@ +# QEMU guest xorg.conf file for GhostBSD/FreeBSD + +Section "ServerLayout" + Identifier "QEMU Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + Section "Monitor" - Identifier "Monitor0" - HorizSync 31.5 - 48.5 - VertRefresh 50.0 - 90.0 - Option "DPMS" + Identifier "Monitor0" + VendorName "QEMU" + ModelName "QEMU Virtual Monitor" + HorizSync 31.5 - 48.5 + VertRefresh 50.0 - 90.0 + Option "DPMS" EndSection Section "Device" - Identifier "Card0" - Driver "cirrus" + Identifier "Card0" + Driver "cirrus" + Option "ShadowFB" "false" + Option "UseFBDev" "false" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1280x1024" "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1280x1024" "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1280x1024" "1024x768" "800x600" "640x480" + EndSubSection EndSection diff --git a/cardDetect/XF86Config.radeonkms b/cardDetect/XF86Config.radeonkms new file mode 100644 index 0000000..6bdd5df --- /dev/null +++ b/cardDetect/XF86Config.radeonkms @@ -0,0 +1,92 @@ +# AMD Radeon KMS graphics xorg.conf file for GhostBSD/FreeBSD +# For legacy AMD/ATI Radeon graphics cards with radeonkms kernel module + +Section "ServerLayout" + Identifier "RadeonKMS Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "AMD Radeon Monitor" + HorizSync 28.0 - 96.0 + VertRefresh 50.0 - 75.0 + Option "DPMS" +EndSection + +Section "Device" + Identifier "Card0" + Driver "radeon" + Option "AccelMethod" "glamor" + Option "DRI" "2" + Option "ColorTiling" "true" + Option "EnablePageFlip" "true" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection +EndSection + +Section "DRI" + Mode 0666 +EndSection diff --git a/cardDetect/XF86Config.safe b/cardDetect/XF86Config.safe new file mode 100644 index 0000000..d8c2cc2 --- /dev/null +++ b/cardDetect/XF86Config.safe @@ -0,0 +1,94 @@ +# Safe mode xorg.conf file for GhostBSD/FreeBSD +# Minimal configuration for troubleshooting and recovery + +Section "ServerLayout" + Identifier "Safe Mode" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" + Option "DontZap" "false" + Option "DontZoom" "false" +EndSection + +Section "ServerFlags" + Option "DefaultServerLayout" "Safe Mode" + Option "DontVTSwitch" "false" + Option "AllowMouseOpenFail" "true" + Option "PciForceNone" "false" + Option "AutoEnableDevices" "false" + Option "AutoAddDevices" "false" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" +EndSection + +Section "Module" + Load "extmod" + Load "dbe" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "base" + Option "XkbModel" "pc104" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "Emulate3Buttons" "true" + Option "Emulate3Timeout" "50" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Unknown" + ModelName "Safe Mode Monitor" + HorizSync 28.0 - 33.0 + VertRefresh 43.0 - 72.0 + + # Conservative 800x600 @ 60Hz + ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync + # Safe 640x480 @ 60Hz + ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync +EndSection + +Section "Device" + Identifier "Card0" + Driver "vesa" + Option "ShadowFB" "true" + Option "DefaultRefresh" "60" + VideoRam 4096 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 8 + Modes "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "800x600" "640x480" + EndSubSection +EndSection diff --git a/cardDetect/XF86Config.scfb b/cardDetect/XF86Config.scfb index ac1c79f..3432c6c 100644 --- a/cardDetect/XF86Config.scfb +++ b/cardDetect/XF86Config.scfb @@ -1,4 +1,89 @@ +# FreeBSD SCFB (syscons framebuffer) xorg.conf file + +Section "ServerLayout" + Identifier "SCFB Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "Generic" + HorizSync 28.0 - 78.0 + VertRefresh 50.0 - 76.0 + Option "DPMS" + + # Common resolutions for SCFB + ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync + ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync + ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync +EndSection + Section "Device" - Identifier "Card0" - Driver "scfb" + Identifier "Card0" + Driver "scfb" + Option "ShadowFB" "true" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1024x768" "800x600" "640x480" + EndSubSection EndSection diff --git a/cardDetect/XF86Config.vesa b/cardDetect/XF86Config.vesa index 9c15fbf..1b1d5dd 100644 --- a/cardDetect/XF86Config.vesa +++ b/cardDetect/XF86Config.vesa @@ -1,78 +1,104 @@ -# Generic PC-BSD 1024x768 VESA xorg.conf file +# Generic VESA compatible xorg.conf file for GhostBSD/FreeBSD Section "ServerLayout" - Identifier "XFree86 Configured" - Screen 0 "Screen0" 0 0 + Identifier "VESA Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" EndSection Section "Files" - ModulePath "/usr/local/lib/modules" - ModulePath "/usr/local/lib/xorg/modules" - FontPath "/usr/local/share/fonts/cyrillic/" - FontPath "/usr/local/share/fonts/TrueType/" - FontPath "/usr/local/share/fonts/illinoy/" - FontPath "/usr/local/share/fonts/webfonts/" - FontPath "/usr/local/share/fonts/misc/" - FontPath "/usr/local/share/fonts/TTF/" - FontPath "/usr/local/share/fonts/Speedo/" - FontPath "/usr/local/share/fonts/Type1/" - FontPath "/usr/local/share/fonts/CID/" - FontPath "/usr/local/share/fonts/75dpi/" - FontPath "/usr/local/share/fonts/100dpi/" - FontPath "/usr/local/share/fonts/dejavu/" - FontPath "/usr/local/share/fonts/cyrillic/" - FontPath "/usr/local/share/fonts/hebrew/" - FontPath "/usr/local/share/fonts/vietnamese/" - FontPath "/usr/local/share/fonts/indic/" - FontPath "/usr/local/share/fonts/fonts-indic/" - FontPath "/usr/local/share/fonts/ae_fonts1/AAHS" - FontPath "/usr/local/share/fonts/ae_fonts1/AGA" - FontPath "/usr/local/share/fonts/ae_fonts1/FS" - FontPath "/usr/local/share/fonts/ae_fonts1/Kasr" - FontPath "/usr/local/share/fonts/ae_fonts1/MCS" - FontPath "/usr/local/share/fonts/ae_fonts1/Shmookh" - FontPath "/usr/local/share/fonts/local/" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" + FontPath "/usr/local/share/fonts/cyrillic/" + FontPath "/usr/local/share/fonts/hebrew/" + FontPath "/usr/local/share/fonts/vietnamese/" + FontPath "/usr/local/share/fonts/indic/" EndSection Section "Module" - Load "extmod" - Load "record" - Load "dbe" - Load "glx" - Load "dri" - Load "dri2" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" EndSection -Section "Monitor" - Identifier "Monitor0" - VendorName "Generic Monitor" - ModelName "Generic" +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection +Section "Monitor" + Identifier "Monitor0" + VendorName "Generic Monitor" + ModelName "VESA Compatible" HorizSync 28.0 - 78.0 VertRefresh 50.0 - 76.0 + Option "DPMS" - # 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz - ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace + # Standard VESA modes # 1024x768 @ 60Hz (VESA) hsync: 48.4kHz ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync # 1024x768 @ 70Hz (VESA) hsync: 56.5kHz ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync - - + # 800x600 @ 60Hz (VESA) hsync: 37.9kHz + ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync + # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz + ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync EndSection -Section "Screen" - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" - DefaultDepth 16 - SubSection "Display" - Depth 16 - Modes "1024x768" - EndSubSection +Section "Device" + Identifier "Card0" + Driver "vesa" + Option "ShadowFB" "true" + Option "DefaultRefresh" "60" EndSection -Section "Device" - Identifier "Card0" - Driver "vesa" +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 8 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1024x768" "800x600" "640x480" + EndSubSection EndSection diff --git a/cardDetect/XF86Config.virtualbox b/cardDetect/XF86Config.virtualbox index a7b1180..f3b891d 100644 --- a/cardDetect/XF86Config.virtualbox +++ b/cardDetect/XF86Config.virtualbox @@ -1,64 +1,86 @@ -# Xorg.conf file generated for GhostBSD +# VirtualBox guest xorg.conf file for GhostBSD/FreeBSD Section "ServerLayout" - Identifier "X.org Configured" + Identifier "VirtualBox Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" EndSection Section "Module" + Load "extmod" + Load "record" + Load "dbe" Load "glx" + Load "dri" + Load "dri2" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Mouse0" Driver "vboxmouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" Identifier "Monitor0" - VendorName "Monitor Vendor" - ModelName "Monitor Model" + VendorName "Oracle Corporation" + ModelName "VirtualBox Virtual Monitor" + HorizSync 1.0 - 10000.0 + VertRefresh 1.0 - 10000.0 + Option "DPMS" EndSection Section "Device" Identifier "Card0" Driver "vboxvideo" BusID "PCI:0:2:0" + Option "ShadowFB" "false" + Option "VESA" "false" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" + DefaultDepth 24 SubSection "Display" Viewport 0 0 - Depth 1 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 4 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 8 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 15 + Depth 16 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 - Depth 16 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" EndSubSection SubSection "Display" Viewport 0 0 - Depth 24 + Depth 32 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" EndSubSection EndSection diff --git a/cardDetect/XF86Config.vmware b/cardDetect/XF86Config.vmware index bf8a576..dffd791 100644 --- a/cardDetect/XF86Config.vmware +++ b/cardDetect/XF86Config.vmware @@ -1,25 +1,86 @@ +# VMware guest xorg.conf file for GhostBSD/FreeBSD + Section "ServerLayout" - Identifier "XFree86 Configured" - Screen 0 "Screen0" 0 0 - Option "AutoAddDevices" "Off + Identifier "VMware Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" + Option "AutoAddDevices" "Off" +EndSection + +Section "Files" + ModulePath "/usr/local/lib/modules" + ModulePath "/usr/local/lib/xorg/modules" + FontPath "/usr/local/share/fonts/misc/" + FontPath "/usr/local/share/fonts/TTF/" + FontPath "/usr/local/share/fonts/Type1/" + FontPath "/usr/local/share/fonts/75dpi/" + FontPath "/usr/local/share/fonts/100dpi/" + FontPath "/usr/local/share/fonts/dejavu/" + FontPath "/usr/local/share/fonts/TrueType/" +EndSection + +Section "Module" + Load "extmod" + Load "record" + Load "dbe" + Load "glx" + Load "dri" + Load "dri2" EndSection Section "InputDevice" - Identifier "Mouse0" - Driver "vmmouse" - Option "Protocol" "auto" - Option "Device" "/dev/sysmouse" - Option "ZAxisMapping" "4 5 6 7" + Identifier "Keyboard0" + Driver "kbd" + Option "Protocol" "standard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "us" EndSection -Section "Screen" - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" +Section "InputDevice" + Identifier "Mouse0" + Driver "vmmouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "VMware" + ModelName "VMware Virtual Monitor" + HorizSync 1.0 - 10000.0 + VertRefresh 1.0 - 10000.0 + Option "DPMS" EndSection Section "Device" - Identifier "Card0" - Driver "vmware" - BusID "0:15:0" + Identifier "Card0" + Driver "vmware" + BusID "PCI:0:15:0" + Option "HWcursor" "false" + Option "StaticXinerama" "false" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 32 + Modes "1920x1080" "1680x1050" "1600x1200" "1400x1050" "1280x1024" "1024x768" "800x600" + EndSubSection EndSection