Advertisement
DOGGYWOOF

Homescreen with nvbar

Mar 12th, 2024 (edited)
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. -- Program Scanner and Runner with GUI (Nicely Styled)
  2.  
  3. -- Function to scan for programs in a directory
  4. function scanForPrograms(directory)
  5. local programs = {}
  6. local files = fs.list(directory)
  7.  
  8. for _, file in ipairs(files) do
  9. if fs.isDir(fs.combine(directory, file)) then
  10. -- If it's a directory, recursively scan it
  11. local subPrograms = scanForPrograms(fs.combine(directory, file))
  12. for _, subProgram in ipairs(subPrograms) do
  13. table.insert(programs, fs.combine(file, subProgram))
  14. end
  15. else
  16. -- If it's a file, add it to the list
  17. table.insert(programs, file)
  18. end
  19. end
  20.  
  21. return programs
  22. end
  23.  
  24. -- Function to draw buttons for each program
  25. function drawButtons(programs)
  26. local screenWidth, screenHeight = term.getSize()
  27.  
  28. term.setBackgroundColor(colors.black)
  29. term.clear()
  30.  
  31. term.setTextColor(colors.white)
  32. term.setCursorPos(1, 1)
  33. term.write("Select an app to run:")
  34.  
  35. for i, program in ipairs(programs) do
  36. term.setCursorPos(2, i + 2)
  37. term.setBackgroundColor(colors.gray)
  38. term.setTextColor(colors.white)
  39. term.clearLine()
  40. term.write(" " .. program .. " ")
  41. end
  42.  
  43. -- Draw navigation bar
  44. drawNavBar()
  45. end
  46.  
  47. -- Function to run a selected program
  48. function runSelectedProgram(program)
  49. term.setBackgroundColor(colors.black)
  50. term.clear()
  51. term.setCursorPos(1, 1)
  52. shell.run(fs.combine("/disk/packages/", program))
  53. end
  54.  
  55. -- Function to handle mouse clicks on buttons
  56. function handleButtonClick(x, y, programs)
  57. for i, program in ipairs(programs) do
  58. if x >= 2 and x <= #program + 3 and y == i + 2 then
  59. runSelectedProgram(program)
  60. return
  61. end
  62. end
  63.  
  64. -- Handle navigation bar clicks
  65. local screenWidth, screenHeight = term.getSize()
  66. local navBarWidth = 20
  67. local navBarStart = math.floor((screenWidth - navBarWidth) / 2)
  68.  
  69. if y == screenHeight then
  70. if x >= navBarStart + 4 and x <= navBarStart + 6 then
  71. -- Clicked on lll
  72. shell.run("/disk/os/recents")
  73. elseif x >= navBarStart + 9 and x <= navBarStart + 11 then
  74. -- Clicked on ()
  75. shell.run("/disk/os/gui")
  76. return -- Terminate the program after running /disk/os/gui
  77. elseif x >= navBarStart + 14 and x <= navBarStart + 16 then
  78. -- Clicked on <
  79. -- Handle back button if needed
  80. end
  81. end
  82. end
  83.  
  84. -- Function to draw navigation bar
  85. function drawNavBar()
  86. local screenWidth, screenHeight = term.getSize()
  87. local navBarWidth = 20
  88. local navBarStart = math.floor((screenWidth - navBarWidth) / 2)
  89.  
  90. -- Save current cursor position
  91. local oldX, oldY = term.getCursorPos()
  92.  
  93. -- Draw Recents button
  94. term.setCursorPos(navBarStart + 4, screenHeight)
  95. term.setBackgroundColor(colors.black)
  96. term.setTextColor(colors.white)
  97. term.write(" lll ")
  98.  
  99. -- Draw Home button
  100. term.setCursorPos(navBarStart + 9, screenHeight)
  101. term.setBackgroundColor(colors.black)
  102. term.setTextColor(colors.white)
  103. term.write(" () ")
  104.  
  105. -- Draw Back button
  106. term.setCursorPos(navBarStart + 14, screenHeight)
  107. term.setBackgroundColor(colors.black)
  108. term.setTextColor(colors.white)
  109. term.write(" < ")
  110.  
  111. -- Restore cursor position
  112. term.setCursorPos(oldX, oldY)
  113. end
  114.  
  115. -- Main function
  116. function main()
  117. local programDirectory = "/disk/packages/"
  118. local programs = scanForPrograms(programDirectory)
  119.  
  120. while true do
  121. drawButtons(programs)
  122.  
  123. local event, button, x, y = os.pullEvent("mouse_click")
  124.  
  125. if event == "mouse_click" and button == 1 then
  126. handleButtonClick(x, y, programs)
  127. end
  128. end
  129. end
  130.  
  131. -- Run the main function
  132. main()
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement