-- Quran Viewer GUI for Roblox Executors (Mobile + PC compatible) local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer or Players:GetPlayers()[1] if not player then return end -- Build UI local gui = Instance.new("ScreenGui") gui.Name = "QuranViewer" gui.ResetOnSpawn = false -- Themes local themes = { Dark = {BG = Color3.fromRGB(30,30,40), T = Color3.fromRGB(40,40,60), B = Color3.fromRGB(60,60,90), X = Color3.new(1,1,1)}, Ocean = {BG = Color3.fromRGB(16,46,74), T = Color3.fromRGB(20,83,116), B = Color3.fromRGB(30,111,150), X = Color3.fromRGB(200,230,255)}, Light = {BG = Color3.fromRGB(240,240,240), T = Color3.fromRGB(220,220,220), B = Color3.fromRGB(200,200,200), X = Color3.new(0,0,0)}, Royal = {BG = Color3.fromRGB(48,25,52), T = Color3.fromRGB(75,0,130), B = Color3.fromRGB(128,0,255), X = Color3.fromRGB(255,230,255)}, Sunset = {BG = Color3.fromRGB(255,140,105), T = Color3.fromRGB(255,99,71), B = Color3.fromRGB(255,160,122), X = Color3.fromRGB(50,0,0)}, } local themeKeys = {} for k in pairs(themes) do table.insert(themeKeys, k) end local themeIndex = 1 local theme = themes[themeKeys[themeIndex]] -- Verses (40 Arabic/English pairs) local verses = { {"1. بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ", "1. In the name of Allah, the Most Gracious, the Most Merciful."}, {"2. ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَٰلَمِينَ", "2. All praise is for Allah—Lord of all worlds."}, {"3. ٱلرَّحْمَٰنِ ٱلرَّحِيمِ", "3. The Most Compassionate, Most Merciful."}, {"4. مَٰلِكِ يَوْمِ ٱلدِّينِ", "4. Master of the Day of Judgment."}, {"5. إِيَّاكَ نَعْبُدُ وَإِيَّاكَ نَسْتَعِينُ", "5. You alone we worship and You alone we ask for help."}, {"6. ٱهْدِنَا ٱلصِّرَٰطَ ٱلْمُسْتَقِيمَ", "6. Guide us along the Straight Path."}, {"7. صِرَٰطَ ٱلَّذِينَ أَنْعَمْتَ عَلَيْهِمْ", "7. The path of those You have blessed."}, {"8. غَيْرِ ٱلْمَغْضُوبِ عَلَيْهِمْ وَلَا ٱلضَّآلِّينَ", "8. Not those who are astray or incur wrath."}, {"9. فَإِنَّ مَعَ ٱلْعُسْرِ يُسْرًۭا", "9. Verily, with hardship comes ease."}, {"10. قُلْ هُوَ ٱللَّهُ أَحَدٌ", "10. Say, 'He is Allah, the One and Only.'"}, {"11. ٱللَّهُ ٱلصَّمَدُ", "11. Allah—the Eternal Refuge."}, {"12. لَمْ يَلِدْ وَلَمْ يُولَدْ", "12. He neither begets nor is born."}, {"13. وَلَمْ يَكُن لَّهُۥ كُفُوًا أَحَدٌۢ", "13. And there is none like unto Him."}, {"14. وَمَا تَوْفِيقِىٓ إِلَّا بِٱللَّهِ", "14. My success is only by Allah."}, {"15. إِنَّ ٱللَّهَ مَعَ ٱلصَّٰبِرِينَ", "15. Indeed, Allah is with the patient."}, {"16. لَا تَحْزَنْ إِنَّ ٱللَّهَ مَعَنَا", "16. Do not grieve; indeed, Allah is with us."}, {"17. ٱللَّهُ نُورُ ٱلسَّمَٰوَٰتِ وَٱلْأَرْضِ", "17. Allah is the Light of the heavens and the earth."}, {"18. وَأَقِمِ ٱلصَّلَوٰةَ", "18. And establish prayer."}, {"19. وَٱلْعَصْرِ", "19. By time."}, {"20. إِنَّ ٱلْإِنسَٰنَ لَفِى خُسْرٍ", "20. Verily, mankind is in loss."}, {"21. قَدْ أَفْلَحَ ٱلْمُؤْمِنُونَ", "21. Successful indeed are the believers."}, {"22. ٱلَّذِينَ هُمْ فِى صَلَاتِهِمْ خَـٰشِعُونَ", "22. Those who humble themselves in their prayers."}, {"23. وَٱلَّذِينَ هُمْ عَنِ ٱللَّغْوِ مُعْرِضُونَ", "23. And those who avoid idle talk."}, {"24. وَٱلَّذِينَ هُمْ لِلزَّكَوٰةِ فَـٰعِلُونَ", "24. And those who give the prescribed charity."}, {"25. وَٱلَّذِينَ هُمْ لِفُرُوجِهِمْ حَـٰفِظُونَ", "25. And those who guard their chastity."}, {"26. وَٱلَّذِينَ هُمْ لِأَمَـٰنَـٰتِهِمْ وَعَهْدِهِمْ رَٰعُونَ", "26. And those who are faithful to their trusts and covenants."}, {"27. وَٱلَّذِينَ هُمْ عَلَىٰ صَلَوَٰتِهِمْ يُحَافِظُونَ", "27. And those who guard their prayers."}, {"28. أُو۟لَـٰٓئِكَ هُمُ ٱلْوَٰرِثُونَ", "28. They will be the inheritors."}, {"29. ٱلَّذِينَ يَرِثُونَ ٱلْفِرْدَوْسَ", "29. Who will inherit Paradise."}, {"30. هُمْ فِيهَا خَـٰلِدُونَ", "30. They will remain there forever."}, {"31. وَقُل رَّبِّ ٱزِدْنِى عِلْمًۭا", "31. Say: 'My Lord, increase me in knowledge.'"}, {"32. وَإِنَّكَ لَعَلَىٰ خُلُقٍ عَظِيمٍۢ", "32. And indeed, you are of a great moral character."}, {"33. إِنَّ مَعَ ٱلْعُسْرِ يُسْرًۭا", "33. Indeed, with hardship comes ease."}, {"34. فَإِذَا فَرَغْتَ فَٱنصَبْ", "34. So when you have finished your duties, then stand up for worship."}, {"35. وَإِلَىٰ رَبِّكَ فَٱرْغَب", "35. And turn your desires to your Lord."}, {"36. إِنَّهُۥ كَانَ بِكُمْ رَحِيمًۭا", "36. Surely, He is ever Merciful to you."}, {"37. ٱللَّهُ لَا إِلَـٰهَ إِلَّا هُوَ", "37. Allah—there is no god but He."}, {"38. وَعِندَهُۥ عِلْمُ ٱلسَّاعَةِ", "38. With Him is knowledge of the Hour."}, {"39. وَيَقُولُ ٱلْكَافِرُ يَـٰلَيْتَنِى كُنتُ تُرَٰبًۭا", "39. The disbeliever will say, 'I wish I were dust!'"}, {"40. رَّبِّ ٱغْفِرْ لِى وَلِوَٰلِدَىَّ", "40. My Lord, forgive me and my parents."}, } local idx = 1 local isArabic = false -- Create Main Frame local frame = Instance.new("Frame") frame.Size = UDim2.new(0.6, 0, 0.5, 0) frame.Position = UDim2.new(0.2, 0, 0.25, 0) frame.BackgroundColor3 = themes.Dark.BG frame.Name = "MainFrame" frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) -- Title Bar local title = Instance.new("TextButton") title.Size = UDim2.new(1, 0, 0.12, 0) title.BackgroundColor3 = themes.Dark.T title.Text = "📖 Quran Viewer" title.Font = Enum.Font.GothamBold title.TextSize = 22 title.TextColor3 = themes.Dark.X title.Name = "Title" title.Parent = frame title.AutoButtonColor = false Instance.new("UICorner", title).CornerRadius = UDim.new(0, 12) -- Minimize Button local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0.08, 0, 1, 0) toggleBtn.Position = UDim2.new(0.92, 0, 0, 0) toggleBtn.Text = "–" toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextSize = 24 toggleBtn.BackgroundColor3 = themes.Dark.B toggleBtn.TextColor3 = themes.Dark.X toggleBtn.Parent = title Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 8) -- Content Frame local content = Instance.new("Frame") content.Size = UDim2.new(1, 0, 0.88, 0) content.Position = UDim2.new(0, 0, 0.12, 0) content.BackgroundTransparency = 1 content.Name = "Content" content.Parent = frame -- Verse Label local verse = Instance.new("TextLabel") verse.Size = UDim2.new(1, -20, 0.6, -20) verse.Position = UDim2.new(0, 10, 0, 10) verse.BackgroundTransparency = 1 verse.TextWrapped = true verse.Font = Enum.Font.GothamSemibold verse.TextSize = 26 verse.TextColor3 = themes.Dark.X verse.Text = verses[idx][2] verse.Name = "Verse" verse.Parent = content -- Buttons creator local function makeBtn(text, pos) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.22, 0, 0.13, 0) btn.Position = pos btn.Text = text btn.Font = Enum.Font.Gotham btn.TextSize = 20 btn.BackgroundColor3 = themes.Dark.B btn.TextColor3 = themes.Dark.X btn.Parent = content Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) return btn end local backBtn = makeBtn("← Back", UDim2.new(0.04, 0, 0.65, 0)) local nextBtn = makeBtn("Next →", UDim2.new(0.29, 0, 0.65, 0)) local copyBtn = makeBtn("📋 Copy", UDim2.new(0.54, 0, 0.65, 0)) local langBtn = makeBtn("🌐 العربية", UDim2.new(0.04, 0, 0.80, 0)) local themeBtn = makeBtn("🎨 Theme", UDim2.new(0.29, 0, 0.80, 0)) -- Update UI function local function updateUI() verse.Text = isArabic and verses[idx][1] or verses[idx][2] end -- Button functions backBtn.MouseButton1Click:Connect(function() if idx > 1 then idx = idx - 1 updateUI() end end) nextBtn.MouseButton1Click:Connect(function() if idx < #verses then idx = idx + 1 updateUI() end end) copyBtn.MouseButton1Click:Connect(function() pcall(function() setclipboard(isArabic and verses[idx][1] or verses[idx][2]) end) end) langBtn.MouseButton1Click:Connect(function() isArabic = not isArabic langBtn.Text = isArabic and "🌐 English" or "🌐 العربية" updateUI() end) themeBtn.MouseButton1Click:Connect(function() themeIndex = themeIndex + 1 if themeIndex > #themeKeys then themeIndex = 1 end theme = themes[themeKeys[themeIndex]] -- Update colors frame.BackgroundColor3 = theme.BG title.BackgroundColor3 = theme.T title.TextColor3 = theme.X toggleBtn.BackgroundColor3 = theme.B toggleBtn.TextColor3 = theme.X verse.TextColor3 = theme.X for _, button in pairs(content:GetChildren()) do if button:IsA("TextButton") then button.BackgroundColor3 = theme.B button.TextColor3 = theme.X end end end) -- Dragging function (free drag anywhere) local function makeDraggable(frameToDrag, dragHandle) local dragging = false local dragStart local startPos local function update(input) local delta = input.Position - dragStart local newPos = UDim2.new( math.clamp(startPos.X.Scale, 0, 1), math.clamp(startPos.X.Offset + delta.X, 0, workspace.CurrentCamera.ViewportSize.X - frameToDrag.AbsoluteSize.X), math.clamp(startPos.Y.Scale, 0, 1), math.clamp(startPos.Y.Offset + delta.Y, 0, workspace.CurrentCamera.ViewportSize.Y - frameToDrag.AbsoluteSize.Y) ) frameToDrag.Position = newPos end dragHandle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = frameToDrag.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then update(input) end end) end makeDraggable(frame, title) -- Tiny button for minimized state local tinyBtn = Instance.new("TextButton") tinyBtn.Size = UDim2.new(0, 100, 0, 40) tinyBtn.Position = UDim2.new(0.05, 0, 0.05, 0) tinyBtn.Text = "Quran" tinyBtn.Font = Enum.Font.GothamBold tinyBtn.TextSize = 22 tinyBtn.BackgroundColor3 = theme.B tinyBtn.TextColor3 = theme.X tinyBtn.Visible = false tinyBtn.Name = "TinyQuranButton" tinyBtn.Parent = gui Instance.new("UICorner", tinyBtn).CornerRadius = UDim.new(0, 8) makeDraggable(tinyBtn, tinyBtn) -- Toggle minimize/open logic local minimized = false toggleBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then -- Hide main frame, show tiny button frame.Visible = false tinyBtn.Visible = true else -- Show main frame, hide tiny button frame.Visible = true tinyBtn.Visible = false end end) -- Open main frame when tiny button clicked tinyBtn.MouseButton1Click:Connect(function() minimized = false frame.Visible = true tinyBtn.Visible = false end) -- Parent GUI pcall(function() gui.Parent = player:WaitForChild("PlayerGui") end) updateUI()