{"id":15696840,"url":"https://github.com/64kramsystem/openscripts","last_synced_at":"2025-07-31T13:33:28.399Z","repository":{"id":39579284,"uuid":"95477433","full_name":"64kramsystem/openscripts","owner":"64kramsystem","description":"(Some of) My personal scripts.","archived":false,"fork":false,"pushed_at":"2025-07-13T22:51:46.000Z","size":2787,"stargazers_count":9,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-14T00:29:43.179Z","etag":null,"topics":["linux","shell-scripts","sysadmin"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/64kramsystem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2017-06-26T18:34:41.000Z","updated_at":"2025-07-13T22:48:15.000Z","dependencies_parsed_at":"2023-02-17T05:01:20.349Z","dependency_job_id":"0a89cfbf-9542-4c58-b214-9d3b10e9dd4c","html_url":"https://github.com/64kramsystem/openscripts","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/64kramsystem/openscripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64kramsystem%2Fopenscripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64kramsystem%2Fopenscripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64kramsystem%2Fopenscripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64kramsystem%2Fopenscripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/64kramsystem","download_url":"https://codeload.github.com/64kramsystem/openscripts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/64kramsystem%2Fopenscripts/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268047846,"owners_count":24187205,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["linux","shell-scripts","sysadmin"],"created_at":"2024-10-03T19:10:09.711Z","updated_at":"2025-07-31T13:33:28.355Z","avatar_url":"https://github.com/64kramsystem.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenScripts\n\nOpenScripts is a collection of some of my scripts/generic programs for personal use:\n\n- algorithms\n  - `ll_node.rb`: a simple implementation of a (singly-)linked list, that I sometimes used when exercising\n- concurrency\n  - `interruptible_job_scheduler.rb`: a scheduler for interruptible process-based job(s)\n- documents\n  - `generate_wiki_home_toc`: generates the `Home.md` file of a (GitHub) wiki repository, with a table of contents\n  - `update_markdown_chapter_references`: generates/updates a Table Of Contents, and navigation links, in a collection of Markdown documents\n  - `update_markdown_toc`: generates/updates a Table Of Contents, for a single Markdown document\n- generic\n  - `bedtime`: sets two (systemd) timers, one to suspend the computer, and the other to shut it down\n  - `compress_dvd`: compresses an unencrypted DVD iso to h265/aac\n  - `convert_cb_archive_to_pdf`: convert CBR/CBZ files to PDF\n  - `convert_video_to_animated_gif`: convert a video to animated gid (via FFmpeg)\n  - `control_music_player`: performs actions on a music player running in the background (supports Clementine, MPV, GMusicBrowser...)\n  - `encode_to_m4a`: encodes and normalizes input files to m4a, using ffmpeg/libsdk_aac\n  - `encode_to_h265`: encodes to h265 format, with conveniences, using ffmpeg/libx265\n  - `fill_dhl_packet_slip`: fills a DHL packet slip, and opens an OpenDocument page with it\n  - `fill_labels`: prepares an OpenDocument page with addresses, to be printed on a standard A4 page with 96x50.8mm labels\n  - `mk_invoice`: prepares a generic (software engineering) invoice in Office Open XML format, using a template, and the data provided in the configuration file\n  - `normalize_flac_tracks`: renames, removes the current tags, and add replay gain, to flac files\n  - `plot_2y_diagram`: plots a diagram with two y scales from a text file, via GNU Plot (and Ruby)\n  - `plot_diagram`: plots a diagram from a text file, via GNU Plot (and Ruby),  with better support for batch processing than `plot_2y_diagram`\n  - `record_desktop`: records a video of the desktop, using FFmpeg\n  - `spell`: spell a phrase, with customizable alphabets\n  - `split_cue_audio_file`: splits an audio file based on the provided cue file\n  - `tag_mp3s_bpm`: tag mp3 files with the BPM field, using the Mixxx analysis\n  - `texerak`: convenient wrapper around Tesseract, to OCR images/documents\n- git\n  - `git_find_default_branch`: finds and prints the default branch; if 'origin/HEAD' is not present, it sets it\n  - `git_maintain_branches`: purge all the branches (local, and their remote tracked) without commits that aren't in the main branch; also syncs with upstream\n  - `git_rename_commits`: rename git commits, using the old git (`filter-branch`) method\n- programming\n  - `build_kernel`: builds the Linux kernel, with some automations\n  - `git_full_delete_branch`: checked deletion of branch (local and remote)\n  - `git_merge_file_commits`: Merge the commits including a given file, in a Git repository\n  - `meld`: wrapper around meld, that opens two blank panels, if no files are passed\n  - `prettify`: prettifies files; supports XML and JSON\n  - `rename_variables`: rename variables/constants with composite names\n  - `ship_gem`: ships a gem, performing all the maintenance operation (version increase, tag, build, push, ...)\n  - `unpack_gem`: unpacks a gem, with additional operations like directory creation, gemspec extraction (when not present), etc.\n- system\n  - `add_repo_key`: add a repository key, according to the parameters passed\n  - `add_resolution_to_display`: add the given resolution to the display adapter, using `xrandr`\n  - `clean_kernel_packages`: uninstall the redundant kernel packages, keeping only the current, and the latest (past or future)\n  - `clean_recents`: clean the recent used file entries whose basename matches the specified patterns\n  - `connect_bt_device`: connects a BT device, working around the complete garbage that is Bluetooth, Bluez, and the BT Ubuntu support\n  - `desnapped`: starts the snap services, run the specified snap, and stops the snapd services\n  - `downer`: download and automatically install packages/images from web pages\n  - `download_ubuntu_packages`: downloads Ubuntu packages from the chosen distro; useful for people \"manually backporting\" packages (eg. `linux-firmware`)\n  - `cpfloppy`: copy the content of multiple floppy images (IMG) to a specified dir\n  - `ejectdisk`: unmounts and powers off a device, or all the connected USB storage devices\n  - `ft(_function)`: very handy script for extracting a token/line from the output of a command\n  - `gitio`: generate a short GitHub URL, and copy it to the clipboard\n  - `install_btrfs_checker`: monthly scrubs the BTRFS partitions and notifies the user on logon\n  - `install_smart_notifier`: notifies the user on logon, when smartd finds a problem with any disk\n  - `maestral_upgrade`: upgrades and restarts Maestral\n  - `manage_bt`: enable a BT device if present, opens the BT manager, then disables the device\n  - `mkfloppy`: create a floppy image (IMG) from the specified files/dirs\n  - `mylast`: runs the last executed MySQL query, and copies the result to the clipboard\n  - `mysql_collect_stats`: collects MySQL server statistics over a session (global status values), in a convenient structure for processing\n  - `mysql_plot_diagrams`: plots diagrams (via GNU Plot), with the stats collected via `mysql_collect_stats`\n  - `mystart`/`mystop`: start/stop MySQL, automatically switching between version, and preparing the data\n  - `nv-switch`: switch between `nvidia-persistenced` and `vfio` card drivers; not currently maintained\n  - `ownsync`: command line sync script for Owncloud/Nextcloud, with conflicts handling\n  - `patch_acpi_s3_support`: patch and hook the DSDT tables with S3 support (see [article](https://saveriomiroddi.github.io/Enabling-the-S3-sleep-suspend-on-the-Lenovo-Yoga-7-AMD-Gen-7-and-possibly-others/))\n  - `purge_trash`: purge the trash files trashed before a certain threashold\n  - `script_template`: create a Bash script template, and sets the permissions\n  - `send_display_to_sleep`: send the display to sleep, working around GNOME's screensaver interference\n  - `upgrade_bluez_from_source`: upgrade the system Bluez to the latest version, from source\n  - `update_mainline_kernel`: automatically installs the latest version of the current (or chosen) kernel, from the Ubuntu mainline builds\n  - `winetemplate`: conveniently run Wine programs, stored in a Git repository with per-program branches\n  - `winetmp`: conveniently run Wine applications in a temporary, sandboxed, environment\n  - `xcalib_safe`: wrapper around xcalib, which detects error states, and warns the user (and exits with error code)\n  - `xi`: copies stdin or file to clipboard, WSL-compatible\n\nI keep adding new content/update old ones.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F64kramsystem%2Fopenscripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F64kramsystem%2Fopenscripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F64kramsystem%2Fopenscripts/lists"}