{"id":24173067,"url":"https://github.com/h8d13/lsk---linux-starter-kit","last_synced_at":"2025-09-20T17:32:47.607Z","repository":{"id":270374931,"uuid":"910162513","full_name":"h8d13/LSK---Linux-Starter-Kit","owner":"h8d13","description":"THE LINUX (DEB) STARTKIT - X11","archived":false,"fork":false,"pushed_at":"2025-01-08T16:05:32.000Z","size":995,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-08T16:43:09.920Z","etag":null,"topics":["deb","debian","linux","startkit"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/h8d13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-30T16:40:48.000Z","updated_at":"2025-01-08T16:05:36.000Z","dependencies_parsed_at":"2024-12-31T10:32:03.170Z","dependency_job_id":"be035672-48c1-480c-8fa9-0c7e7c1c5d9c","html_url":"https://github.com/h8d13/LSK---Linux-Starter-Kit","commit_stats":null,"previous_names":["h8d13/lsk","h8d13/lsk---linux-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h8d13%2FLSK---Linux-Starter-Kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h8d13%2FLSK---Linux-Starter-Kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h8d13%2FLSK---Linux-Starter-Kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h8d13%2FLSK---Linux-Starter-Kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h8d13","download_url":"https://codeload.github.com/h8d13/LSK---Linux-Starter-Kit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233678688,"owners_count":18712984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deb","debian","linux","startkit"],"created_at":"2025-01-13T01:14:20.574Z","updated_at":"2025-09-20T17:32:47.601Z","avatar_url":"https://github.com/h8d13.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# For Deb based systems \n\nGraphics card not being detected ? Can't update BIOS ? Want to switch dektop type?\n[See Other Common Issues](https://github.com/h8d13/LSK---Linux-Starter-Kit/blob/main/commonissues.md)\n\nThe installs themselves are pretty straight forward depending on distro:\nThe only things to be careful about: Where are you installing your OS and make sure your keyboard input layout is correct (otherwise you won't get past your password aha).\n\nAlso make sure that you remove the bootable media after the install and change the boot order so you don't install twice :D\n\n\u003e **_NOTE:_** Use GPT for modern systems, especially if you need support for drives larger than 2TB or UEFI boot.\n\u003e However, if your system uses legacy BIOS, MBR may be required.\n\u003e For security reasons, many modern Debian-based systems disable the root account by default. I prefer to enable it, but you always have ```sudo``` for elevated tasks.\n\u003e I made this guide for beginners to Deb systems (especially with RaspP being so popular and many VPS servers using Deb too) much information might change or is up to personal preferences. \n\nYou can use Rufus or Etcher for quick USBs!\n\n## After initial install\n\n```sudo apt update \u0026\u0026 sudo apt upgrade -y```\n\n\u003e **_NOTE:_**  While there might be many distros a lot of the kernel uses are similar so I'll try to not be too specific. \n\u003e What is generic is to check your device for what components they have: Especially Graphics devices which often can cause issues. \n\u003e The above can take a few minutes giving you time to do some Google work.\n\n```lspci -nnk ``` \nTo see all devices being detected including network, other devices, etc\n\n```lspci | grep -i vga```\nFor GPU specifically\n\nYou can also use ```lscpu``` and ```lsblk```\n\n^ That last one is especially useful for detecting USBs or SSDs, etc\n\nBut if you're there already you probably understand CPU architectures :D\nIf you're unsure again best is to go down some Googling: From you computer's manufacturer website, then check CPU \"architecture\" or \"instruction set\"\n64 bit, 32 bit, or ARM (Raspberri pi for example) \n\nThis can get confusing because it is sometimes named AMD64 (86x64) because it was created by AMD (then open-sourced, idk?), but doesn't mean it's not compatible with Intel. \nThis is also the most adopted now, so most modern hardware will run this.\n\nThe same can be done with ```lsusb``` if you're using weird connectors. \n\n```sudo reboot``` after the update and upgrade are done. \n\n\u003e **_NOTE:_**\n\u003e ````\n\u003e lshw      # Hardware configuration\n\u003e lsmod     # Loaded kernel modules\n\u003e lsscsi    # SCSI devices\n\u003e lspnp     # Plug and Play devices\n\u003e lsmem     # Memory information\n\u003e lstopo    # Hardware topology\n\u003e lsattr    # File attributes\n\u003e lsof      # List open files\n\u003e sudo lshw \n\n\n## When first upgrade is done\n\nNow we can take care of graphics: \nFor intel it is most of time already integrated... As it's a often used in \"dual\" graphics \n\nThen Nvidia:\n```sudo apt install {nvidia-driver-XXX}```\n\nFor AMD it's a bit more fun: They are included in the Linux kernel due to their open-source. \nBut you will need some tools for modern applications:\n\n```sudo apt install mesa-vulkan-drivers mesa-utils``` \n\nOn Linux Mint it is handled automatically, you just have to follow the welcome window launchers green buttons :)\n\n\u003e **_NOTE:_** It's best to go find on the official sites for compatibility:\n\u003e Device manufacturer (This gives you the full specs)\n\u003e Graphics provider (Specific version compatible with^^)\n\u003e You might need libdrm for older hardware\n\nYou will need to reboot again, then ```nvidia-smi``` to check or the mesa/vulkan equivalent.\n\n## Keeping an install clean\n\nKeep only essential packages, this both helps your system and makes you less vulnerable:\n\nList all packages: It might seem like there is a lot of fluff depending on distro but if you're on a fresh install it's quite normal as it's all the system components.\nThis number is still 2-3x lower than a Windows counterpart.\n\n```dpkg -l```\n\nCheck an individual problematic package: \n\n```dpkg -l | grep {package_name}```\n\nUseful to check past pkg installs\n\n```grep \"install \" /var/log/dpkg.log | tail```\n\nFor the lazy people like me (Quoting @Exact-Teacher8489):\nYou can install with (add sudo):\n``` \napt install $packagename\n\n# But you can also uninstall with:\n\napt install packagename-\n\n# or\n\napt remove packagename\n```\n\nThat first removal method is very neat when using arrow up / down in terminal. \n\n\n## Update warnings ⚠️\nThese can happen quite frequently when one of the software providers you use didn't update to latest signatures. \nThis will give you annoying errors\n\nHere is how to fix it:\n\nRemoving\n```sudo apt remove --purge {pkgs1} {pkgs2}```\n\nTo make sure dependencies are also removed\n```sudo apt autoremove --purge```\n\n----\n\nCheck the problematic package:\n\n```grep -r {\"brave\"} /etc/apt/sources.list /etc/apt/sources.list.d/```\n\nRemove it from sources list:\n\n```sudo rm /etc/apt/sources.list.d/{brave-browser-release.list}```\n\nThen run update to your packages lists again to remove the warning:\n```sudo apt update```\n\nIf you 're still having issues with dependencies USE AT YOUR OWN RISK:\n\n```\nsudo apt full-upgrade\nsudo apt --fix-broken install\nsudo dpkg --configure -a\n```\n\nThere are also \"resolvers\" or \"managers\" that can help you, and it also gives you a visual interface if you don' like the terminal:\n\n``` \nsudo apt install aptitude\n# then\naptitude\n\n# or \nsudo apt install synaptic\n# then \nsynaptic\n````\n\n## Packages\n\n.deb packages are your friends! \"dpkg\" is designed to work with these files. \nThey will be lighter because they interact directly with the host system. \n\nFlatpak is the most practical way to download apps in my opinion: They will be slightly heavier than on Windows because:\nMany modern apps (like Stremio) are built using Electron, which bundles a full Chromium engine and Node.js runtime. This increases the size of the app significantly.\n\nBut they install seemlessly with dependencies: \n\n```flatpak install flathub com.stremio.Stremio```\n\nSome distros like Linux Mint have a neat little software manager pre-installed!\nBasically just uses Flatpack for people who don't like terminal. \n\nFor Ubuntu, it will be snap packages by default. But you can easily install flatpack or deb packages too or use other managers. \n\nDo be careful that .deb interacts with the host system so download from trusted sources. \n\n## Security \u0026 Privacy 🔒\n\nCheck security updates are installed (ubuntu): \n\nDefault Ubuntu isos \n\n```cat /etc/apt/apt.conf.d/20auto-upgrades```\n\nRe-configure it ? \n\n```sudo dpkg-reconfigure unattended-upgrades```\n\n----\n\nFirewall\n\n```sudo apt install ufw```\n```sudo ufw default deny incoming```\n```sudo ufw enable```\n```sudo ufw allow ssh``` Make sure to use keys :)\n\nThis will restrict incoming traffic, you can use a VPN for further anonimity. \n\nIf you're running local servers: \n```sudo ufw allow 80/tcp``` \n\nTo secure that further you can look into reverse proxies. \n\nFor my browser Mozilla FF is the way to go (they are at much of the origin of documentation about JavaScript as a whole, it is also pre-installed and open-source). If you want to learn more: \n\u003ca href=\"https://blog.mozilla.org/en/mozilla/introducing-firefox-quantum/\" target=\"_blank\"\u003eFireFox Quantum Blog Post\u003c/a\u003e\n\n\nYou can also add privacy badger and an adblock for an even better experience. I've ditched my TV devices with mini-computers this way!\n\nYou can always get Chromium (the same rendering engine, same tools as Chrome without the hassle).\n\n## 🖥️ Remote desktop sessions\n\nFor some weird reason this can be quite annoying depending on the distro\n\n\u003e **_NOTE:_** One thing  I found to fix a lot of my issues is to create a second user with elevated privileges so that you can remote connect to it easily while keeping the device functional on it's own.\n\u003e You could also just use VNC but that's cheating and increased latency with framebuffers :D\n\u003e You might have to check your session type (Wayland vs x11) but many distros still use x11 by default (on many distros you can simply log out and choose from the login page).\n\u003e If you're on nvidia GPU, going the x11 route will have advantages!\n\n```sudo apt install xrdp xserver-xorg-core```\n\n```sudo systemctl enable xrdp```\n```sudo systemctl start xrdp```\n\nCheck if it's running:\n\n```sudo systemctl status xrdp```\n\n```sudo adduser xrdp ssl-cert```\n\nIf not rebooting sometimes helps. \n\n----\n\nIf you have ufw enable make sure to ```sudo ufw allow 3389```\nThis is the standard port.\n\nIf you get a black screen you might need to ```echo \"gnome-session\" \u003e ~/.xsession```\nDepending on your desktop type. \n\n```ip addr show```\n\nThen add the specific port 3389\n\nIt should look something like: 192.x.x.x:3389 and you DO NOT NEED to specify a user just yet.\nNow this is where it usually fails because you're already in the session. To me the best is to make a second user for remote sessions:\n\n```sudo adduser {rdpuser}```\n\nThen give it privileges: ```sudo usermod -aG sudo {rdpuser}```\n\nThere you go :) You know how to make a good install. For cherry on the cake you can share a folder between all users (this could be your coding or media?)\n\n```chmod 777 {/home/mainuser/shared-folder}```\n\nThen you can login into this new user you created without breaking everything!\n\nYou can also give your second profile all sudo rights (which will still require pswd) \n\n```gpasswd -a {user} sudo``` \n\n## Direct SSH access AND LOW LEVEL X11 ACCESS\n\nOne by one: \n\n``` sudo apt install openssh-server\nsudo systemctl start ssh\nsudo ufw allow ssh\nsudo ufw allow 22\nsudo systemctl status ssh\n```\nRegular SSH access: \n\n```ssh {user@host}```\n\nThen from your Windows machine: Make sure you installed [ VC](https://vcxsrv.com/)\nAnd launched it.\n\nCheck you are using X11 then follow:\n```\necho $XDG_SESSION_TYPE\nxhost +local:\nexport DISPLAY={windows_ip:0}\n```\n\nIf the set up works it's incredibly cool, you can for example:\n\n```\nssh -X user@linux_ip\nfirefox\n```\n\nIt will look and feel like a normal window but is running on the linux system! \n\n![X11DIRECTACCESS](media/capcap.PNG)\n\nIt really isn't that complicated but the reason why these are set up like this is to prevent session hijacking: RSA host key fingerprint which is used to verify the server's identity in future connections to prevent man-in-the-middle attacks.\n\nWhy you should get a prompt at some point that generates the keys (and asks you to confirm by typing \"yes\"). \n\nThis also means Native GPU/hardware access without added encoding/decoding. \nWhat I mean is xrdp is okay, X11 direct is incredible. Then VNC is the noob way. \n\nThis means you can for example get your code editor on your Windows machine but running on the linux system to do whatever you like. \n\nYou can now chose between KDE, XFCE4 or whatver desktop you like... \nI like to keep the original user's desktop intact to always be able to control from there and install desktops on secondary users...\n\n\u003e **_NOTE:_** This is all especially helpful if you're thinking about or have a VPS or any head-less device like a PI.\n\u003e You can also use tools like FileZila to monitor system files with a kind of \"double tree\" interface which uses sFTP\n\u003e This let's you for example edit code that is live on a head-less server on the fly using temp downloads.\n\n## Screen tear 📺 \nCan happen sometimes if you made a mistake in drivers or your install was corrupted.\nIf you cannot find a solution you can temporarly still get in the app.\n\nTry disabling gpu acceleration for a specific program when launching it through the Terminal: \n\n```{code} --disable-gpu```\n\n\n\u003cimg src=\"media/weirdtear.webp\" alt=\"screentearing\" width=\"300\"\u003e\n(Windows example, happens sometimes when launching an app with GPU acceleration on debian systems, likely due to drivers)\n\nIf an issue like this persists; I would recommend checking if the installation was not corrupted somewhere along even at initial install..\nSimple solution is to check compatibility issues and re-install a clean OS with more knowledge.\n\nIt's also recommended to make savepoints before making major changes, there are a lot of different libraries to do this for more redundant storage :D\n\n## Developer tools\n\nI personally just get vs code from the official source and is nicely integrated with Python with the public Microsoft extensions.\nThe beauty of it is that a large part of linux itself uses python compatible libraries as it's all open-source. \n\n\nYou can simply create a file called hello.py and click the python version at the bottom right to start creating a .venv\n\nThen save your code and make sure to run it with the venv path to not get mixed with system wide packages:\n\n```cd .venv```\n```./bin/python3 hello.py ```\n\nYou can also toggle telemetry data off in Visual Studio Code for privacy. \n\nIf you're working with .config, .ignore, files they are always hidden by default and you can see them by doing alt + '.' in your files browser. Or right clicking and enable \"Hidden files\".\n\nExtension that automatically selects pasted text (useful for restructuring code quickly). Works on CTRL + V or Shift for regular paste. \n\n[DavidpCahill](https://github.com/davidpcahill/auto-select-pasted-text/tree/main)\n\nAnother thing is on Linux default copy is with shift (at least wwhen inside terminal for example) , it sounds annoying but it's because ctrl + C is reserved for interruption of programs.\n\n---\n\n## System Monitoring 📈\n\nMany know ```htop``` which is great already but there is a special one to my heart because it looks cooler: \n\n``` sudo apt install btm ```\nYou can then simply launch it in terminal: ```btm```\n\nIf it's not found, it means that you might need to follow install instructions:\nOr if you're like me and still confused at the 20 package managers available:\n```\ncurl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom_0.10.2-1_amd64.deb\n# then \nsudo dpkg -i bottom_0.10.2-1_amd64.deb\n```\nWant to go deeper ? \nFor kernel logs\n\n```` sudo journalctl -k ````\n\nTo follow: you will see real-time updates. \n\n```sudo journalctl -k -f ``` \n\nWhat is cool is that you can see how your firewall for example might be protecting you, or even a USB connecting.\n\n## YOUR ENVIRONMENT ! \n\nLinux is highly customizable in general. \n\nIf you are using default Ubuntu GNOME desktop here is a hot tip:\nI hate the fact you have to click 2 times to get to your apps...\n\n```sudo apt install gnome-shell-extensions gnome-shell-extension-manager```\n\nThen toggle ON: Ubuntu Dock\n\n----\n\n[Tasksel](https://wiki.debian.org/tasksel)\npackage provides a simple interface for users who want to configure their system to perform a specific task. It was recommended by reddit user @Exact-Teacher8489 !\n\nI also loves virtual dektops for managers: in linux MINT its control alt left or right and is super ingrained in my brain. \nYou will find yourself using the mouse less which gains you precious time. Up to show global overview of desktops and down to see windows in this desktop.\n\nYou can do the same: Ctrl alt shift right/left to move windows to another workspace. You can just alt to return to workspace 1. \n\nYou can also control alt T for a quick terminal \u0026 control shift Q to close it. \n\nThere are countless popular managers with varying levels of difficulty, but the original in mint is enough for me:\nRight click your menu bar \u003e add workspaces to it, choose how many you want and boom you have virtual desktops.\n\n----\n\nOn KDE the default is Meta (windows key) + W to open the overview. \nHere is a link for further set-up as the shortcuts aren't all done by default:\n[Ubuntu Forums](https://askubuntu.com/questions/1290451/in-kde-plasma-how-can-i-switch-between-virtual-desktops-using-meta-tab)\n\n----\n\nIn PopOS the default will be Ctrl + super + up/down and they also have tiling built-in (automatic resizing) which is very practical. \nWhen you activated tiling you can also use just super for launcher, and super + direction to select a window.\n\nThen shift + super + up/down to move them to different desktops.\n\n![popostilingworkspaces](media/poposexample.png)\n\n## 📷 Working with cameras or HMDI inputs \n\nAgain you might need some basic tools: \n```sudo apt install vlc v4l-utils ffmpeg```\n\nFirst check devices:\n``` ls /dev/video* ```\n\n----\nThen check the ouput: \n```ffplay /dev/video0```\nOr using VLC (open-source):\n```vlc v4l2:///dev/video0```\n\n----\n\nBetter yet use open-cv !\n``` pip install opencv-python```\n\nThen create a script:\n```\nimport cv2\n\ncap = cv2.VideoCapture(0)\nwhile cap.isOpened():\n    _, frame = cap.read()\n    _, binary = cv2.threshold(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), 127, 255, cv2.THRESH_BINARY)\n    cv2.imshow('Binary', binary)\n    if cv2.waitKey(1) \u0026 0xFF == ord('q'): break\n\ncap.release()\ncv2.destroyAllWindows()\n```\n\nYou might need to give your user permissions run these seperatly: \n```\nsudo usermod -a -G video $USER\nnewgrp video\n```\n\nI've made a guide on how to get old VHS tapes onto hard drives: \n[OBS GUIDE LINUX](https://github.com/h8d13/VHS-To-Digital)\n\n## Working with USBs 🔌 \n\nAs we mentionned above:\n\nFirst find detected devices: ```lsusb```\n\nThen we want to understand the devices endpoints IN/OUT, this will print all the verbose info:\n\n```lsusb -d {1c4f:007c} -v```\n\nNow that we have the information we need we can try to interface with it, depending on device it might be really easy or the worst time of your life. \n\n----\n\n``` pip install pyusb```\n\nWe'll create a simple keylogger for educational purposes but the idea can be replicated to other more intresting devices (say a fingerpint scanner!) \n\n```\nimport usb.core\nimport usb.util\n\n## QWERTY HEXADECIMAL VALUES\ndef get_key(data):\n   keymap = {\n       0x04: 'a', 0x05: 'b', 0x06: 'c', 0x07: 'd', 0x08: 'e', 0x09: 'f',\n       0x0A: 'g', 0x0B: 'h', 0x0C: 'i', 0x0D: 'j', 0x0E: 'k', 0x0F: 'l',\n       0x10: 'm', 0x11: 'n', 0x12: 'o', 0x13: 'p', 0x14: 'q', 0x15: 'r',\n       0x16: 's', 0x17: 't', 0x18: 'u', 0x19: 'v', 0x1A: 'w', 0x1B: 'x',\n       0x1C: 'y', 0x1D: 'z', 0x1E: '1', 0x1F: '2', 0x20: '3', 0x21: '4',\n       0x22: '5', 0x23: '6', 0x24: '7', 0x25: '8', 0x26: '9', 0x27: '0'\n   }\n   return keymap.get(data[2], ''), hex(data[2]) if len(data) \u003e 2 else ('', '')\n\n## DETACH FROM KERNEL AND SPECIFY VENDOR+PRODUCT\ndef monitor_keyboard():\n   device = usb.core.find(idVendor=0x1c4f, idProduct=0x007c)\n   if device.is_kernel_driver_active(0):\n       device.detach_kernel_driver(0)\n   \n   device.set_configuration()\n   endpoint = device.get_active_configuration()[(0,0)][0]\n\n   ### MAIN LOOP RETURN KEY, HEX AND DECIMAL VALUE\n   try:\n       while True:\n           try:\n               data = endpoint.read(8)\n               key, hex_value = get_key(data)\n               if key:\n                   print(f\"Key: {key} | Hex: {hex_value} | Decimal: {int(hex_value, 16)}\")\n           except usb.core.USBError as e:\n               if e.args[0] != 110:\n                   break\n   except KeyboardInterrupt:\n       device.attach_kernel_driver(0)\n\nif __name__ == \"__main__\":\n   monitor_keyboard()\n```\n\nSome devices need specific communications protocols: Say again this was a fingerprint scanner there would often be sent write data that 'activates' the fingerprint area then another to 'confirm'. \n\nYou can often find the information online because some nerd reversed it or it's released by manufacturers. \nwhen running the verbose command I provided above you will also see entry/exit points of the device which might help 😉\n\n### BONUS 🎁\n\nI've included some simple example scripts in the repo for general purposes and reference! \n\n![SYSTEMONITOR](media/capcapcap.PNG)\n\nOne of them is a green dot that is only green if system ressources are healthy.\n\nIt's simple but shows off PyQt integration with low level linux system using psutil. \n\nI made a complete tutorial from Python bindings to C++.\n\n[Modify your system yourself tutorial](https://github.com/h8d13/LSK---Linux-Starter-Kit/tree/main/scripts)\n\n----\n\n### One more bonus...\nIn a few clicks control other Linux systems (like a phone or tablet with Android) from you new system 😎\n\n```sudo apt install adb scrcpy```\n\nConnect it allow USB debugging (in settings developer mode) \u0026 file transfer\n✅ Press always allow this computer\n\nCheck connections:\n``` adb devices```\nThen simply run: ```scrcpy``` \n\nThen you can interface with python this simply opens the clock app:\n\nIn your venv terminal:\n```pip install pure-python-adb```\n\nThen in python script:\n```from ppadb.client import Client as AdbClient\n\n# Connect to ADB\nclient = AdbClient(host=\"127.0.0.1\", port=5037)\ndevice = client.devices()[0]\n\n# Launch the Samsung Clock app\ndevice.shell(\"am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.sec.android.app.clockpackage/.ClockPackage\")\n```\n\nYou can now play Subway surfers on the side :D Or get neural network to play it for you hehe.\n\n[HayDay Automation Example](https://github.com/h8d13/HayDay)\n\n``` \nfrom ppadb.client import Client as AdbClient\n\ndef swipe_screen(device, x1, y1, x2, y2, duration=2000):\n    \"\"\"\n    Simulates a swipe gesture on the connected device.\n    :param device: Connected ADB device.\n\n    :param x1: Starting x-coordinate.\n    :param y1: Starting y-coordinate.\n    :param x2: Ending x-coordinate.\n    :param y2: Ending y-coordinate.\n    :param duration: ms\n    \"\"\"\n    device.shell(f\"input swipe {x1} {y1} {x2} {y2} {duration}\")\n    print(f\"Swiped from ({x1}, {y1}) to ({x2}, {y2}) over {duration}ms\")\n\n# Connect to ADB and device\nclient = AdbClient(host=\"127.0.0.1\", port=5037)\ndevices = client.devices()\n\nif not devices:\n    print(\"No devices connected\")\nelse:\n    device = devices[0]\n    print(f\"Connected to device: {device.serial}\")\n    swipe_screen(device, 100, 1000, 100, 100, duration=1000)\n\n```\n----\n\nYou can go a step further to and install F-Droid and Termux on the tablet/phone itself to get a sub linux.\n\nGo to: Settings \u003e Briometrics and Security\n\nInstall unknown apps\n\nGo to https://f-droid.org/en/ and download the apk\nThen download termux\nFrom F-Droid (Open-source)\n\nOpen termux \nRun ```pkg update```\n```pkg upgrade```\n\nYou can then go full inception and download Python \n``` pkg install python ```\n\nYou could even run servers or a lightweight desktop on this hardware too. \nAltho mine is probably too old...\n\n![ANDROID](media/capcapcapcap.PNG)\n\n\n----\n\n### FINAL BONUS AND I'M OUT\n \nAfter some googling I found out that the GNU project (Stands for GNU Not Unix) a lot of the commands you still use today, file system, bash, gcc, coreutils, POSIX standards, FHS is based/inspired by Unix.\nThis is ls, cat, rm, cp \n\nWhich linux adds features on top of\nAn operating system that was dominant in entreprise in the 70-80s and that little hackers like yourself hated because they had to pay AT\u0026T Bell Labs enourmous amounts for licenses. \nMinix was also another \"copy\" project made for students that was much cheaper alternative 'was about 70$ which you would get a book with :D\n\nWhy is this important today? \n\nFaster development, collaboration, open access to experimentation and iteration, it also makes accountability important as new finds in vulnerabilities or malicious code are resolved quicker. \nIt's also freedom of vendor lock-in, both license wise and hardware. Plus the support for modern tech like AI, encryption, etc\nFinally, continuity, the fact that these will keep evolving way more than any closed counter-part.\n\nA lot of what I mentionned in this is all available to check out in full because of their open-source nature and that also gives YOU the freedom to do what you want with it today and the next.\n\nPeace \u003c3\n\nYou're not done ???? Okay. \n\n----\n\n```sudo apt install qemu-system-x86 qemu-utils``` to verify install: ```qemu-system-x86_64 --version```\n\nTry QEMU and create your own computer within your computer (used Qubes to make it even more ironic 🧠)\nAlso check compatibility of the OS you're trying to emulate.\n\n```sudo apt install qemu-system-x86 qemu-utils\nsudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils\n```\n\n\n\u003e **_NOTE:_** You might need to do some extra steps for Virtualization depending on if you're using intel or amd (I mean you're fucked if you have intel?).\n\u003e ```LC_ALL=C lscpu | grep Virtualization\n\u003e lsmod | grep kvm\n\u003e ls -l /dev/kvm\n\u003e groups | grep kvm\n\u003e sudo usermod -aG kvm $USER\n\u003e```\n\n\n```\nqemu-img create -f qcow2 myvm.qcow2 20G\n\n#Create an ISO from a USB or use an existing... There is tools for this too, but since you're a terminal pro.\nsudo dd if=/dev/sda of=qubes.iso bs=4M status=progress\n## This is also done at a block level copying everything from it including empty space. Now you regret that 512gb USB stick...\n\n## Now you can launch your first VM\nqemu-system-x86_64   -enable-kvm   -m 8096   -cpu host   -smp 2   -hda myvm.qcow2   -cdrom ~/Downloads/qubes.iso   -boot d\n\n```\n\n---\n\nWhen done installing: \nYou just need to remove/change some things (the disk and boot order):\n\n```\nqemu-system-x86_64 \\\n  -enable-kvm \\\n  -m 2048 \\\n  -cpu host \\\n  -smp 2 \\\n  -hda ~/myvm.qcow2 \\\n  -boot c\n```\n\nYou might need to play around with settings if you get screen-tear.\n\n\u003e **_NOTE:_**\n\u003e For example this fixed my KDE Neon VM. Again depending on what you're trying to achieve and your hardware. Add to the boot commands above:\n\u003e Tip: after downloading an ISO rename the annoying name to something shorter. Then right click it properties and it will show the full path to your ISO.\n\u003e Also change the 2000 to something higher depending on available RAM, well because 2GiB will not do it for many OSes.\n\u003e About the disk space we created I put 20GiB but you might want more for modern OSes. Also what is cool is that this space isn't actually \"used\" on your host system yet, so unless you clutter the VM it will not take the full size from your host OS.\n\n```\n--display gtk,gl=off\n```\n\nMake it feel like home: In your QEMU window set the view to \"Best Fit\" or \"Fullscreen\" depending on the desktop type try different resolutions: I found to enjoy 16:10 @ 1050px which i think is plenty for dev uness working with HD graphics. \n\nCtrl + alt + F to get out of fullscreen. You can also control alt G to lock into the QEMU instance and do the same to release.\n\nHere is another guide I made for ![Windows-Sub-System](https://github.com/h8d13/Windows-Sub-System)\n\n----\n\nYou're still here.........\n\nLet's 1V1 Rocket League:\n\nInstall steam\nGo to settings \u003e Compatibilty\n\nEnable proton experimental\nRIght click your game go to compatibility again \u003e Force Proton Expiremental. \nThis will force some downloads (steam linux run time, proton version, steamworks). \n\nOtherwise Steam let's you play against bots only, which is a bit sad...\n\nSometimes it might even re-install the game totally so better to not do that with 130gb game directly. \nYou can check proton db for compatibilities. \n\nFor a USB generic xbox controller:\n\n```\nsudo apt update\nsudo apt install xboxdrv\n\n## If xboxdrv doesn't work, ensure the xpad module is loaded:\n\nsudo modprobe xpad\n```\n\nTest your inputs in steam to verify it's all good. \n\nIf still not working it's often the same issue with linux permissions:\n```sudo usermod -aG input $USER```\n\n![Gaming old hardware](https://github.com/h8d13/LSK---Linux-Starter-Kit/blob/main/oldhardwaregames.md)\n\n## Reviving Old Hardware @geerlingguy\n\nFrom what I gather the older the hardware, the more lightweight the distro you will want to pick. \nThis means either going the light Ubuntu distros (Mate or Xubuntu) route or Mint which is slightly lighter than Ubuntu.\n\nBut if it's not too old you can go for the regular long term support. \nYou can also go XFCE route ( another lighter desktop), which might not look as polished but is lighter and has more performance on old hardware. \n\nThere are also a bunch of beautiful systems that are also deb based like Zorin OS and KDE Neon, Pop!OS, Kali, MX and more... But under the hood you will still be able to use all your new knowledge as it's still bellow all the pretty windows.\n\n----\n\n\"To seek is to recognize potential beyond a current state, a gesture that inherently lacks contempt for what is.\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh8d13%2Flsk---linux-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh8d13%2Flsk---linux-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh8d13%2Flsk---linux-starter-kit/lists"}