Jump to content

Blogger

Blog Bot
  • Joined

  • Last visited

    Never

Blog Entries posted by Blogger

  1. by: Abhishek Prakash
    Thu, 19 Jun 2025 05:21:30 GMT

    You probably have noticed a lack of new articles this week. And there is a 'good' reason for that. I have been busy with the arrival of my second child 🚼
    That is also the reason why there was a slight delay in lifetime membership activation. But it's done for all the 43 new members so far (of the set goal of 75 new lifetime members).
    Things are getting back on the track as the mother and baby duo have been discharged from the hospital. You should start seeing more tutorials, I promise 😸
    The 13th anniversary offer is still going on. You get the lifetime membership option with reduced pricing of $76 instead of the usual $99 along with a Linux command line eBook. If you ever wanted to support us with Plus membership but didn't like the recurring subscription, this is the best time for that 😃
    Get It's FOSS Lifetime Membership 💬 Let's see what else you get in this edition
    A new Kali Linux release. ONLYOFFICE 9 with more modern features. Nitrux Linux offers Hyprland by default. Linux Foundation launching a package manager. And other Linux news, tips, and, of course, memes! 📰 Linux and Open Source News
    Kali Linux 2025.2 release is packed with many visual buffs. A cheaper variant of the Linux-powered Liberux NEXX is here. The Linux Foundation has launched FAIR Package Manager for WordPress. Apple has introduced an open source tool for running Linux containers on macOS. ONLYOFFICE 9.0 release brings modern new features to the open source office suite.
    With Version 9.0 Release, ONLYOFFICE Becomes an Even Better Choice for Linux UsersThere are some cool new features in this From AI powered OCR to form editor to more file compatibility, ONLYOFFICE is getting better with each release.It's FOSS NewsSourav RudraNitrux has moved to Hyprland, ditching NX Desktop and KDE Plasma in the process.
    Nitrux Gets Rid of Plasma & NX Desktop for HyprlandFew Linux distributions can pull this off.It's FOSS NewsSourav Rudra🧠 What We’re Thinking About
    Denmark has set out to replace Microsoft Office with LibreOffice in its Ministry of Digital Affairs.
    Excellent! Denmark Set to Replace Microsoft Office with Open Source AlternativeDenmark’s Digital Ministry is replacing Microsoft services with LibreOffice and Linux.It's FOSS NewsSourav Rudra🧮 Linux Tips, Tutorials and More
    You can master Joplin with these handy tips. Here are 9 major annoyances with Linux that aren't an issue anymore. Here's a fix for the continuous buzzing noise from your desk speakers on Linux. Using Tiling Assistant on GNOME is an easy way to speed up your workflow.
    How to Use Tiling Assistant on GNOME DesktopWondering how to use tiling windows on GNOME? Try the tiling assistant. Here’s how it works.It's FOSSSagar Sharma Desktop Linux is mostly neglected by the industry but loved by the community. For the past 13 years, It's FOSS has been helping people use Linux on their personal computers. And we are now facing the existential threat from AI models stealing our content.
    If you like what we do and would love to support our work, please become It's FOSS Plus member. It costs $24 a year (less than the cost of a burger meal each month) and you get an ad-free reading experience with the satisfaction of helping the desktop Linux community.
    Join It's FOSS Plus 👷 Homelab and Maker's Corner
    The SAKURA-II looks like a nice addition for the Raspberry Pi AI enthusiasts in the house.
    SAKURA-II Brings Energy-Efficient Edge AI to Raspberry Pi 5The SAKURA-II is an interesting bit of kit for the Raspberry Pi 5.It's FOSS NewsSourav Rudra✨ Project Highlight
    If you ever wanted to relive classic games, then RetroArch is the way to go.
    RetroArch is The Best Way to Play Classic Games on LinuxA powerful frontend for emulators, that offers a clean interface and wide platform support.It's FOSS NewsSourav Rudra📽️ Videos I am Creating for You
    Use terminal like a pro with these terminal shortcuts.
    Subscribe to It's FOSS YouTube Channel🧩 Quiz Time
    Do you know other shells beyond Bash? Prove it.
    Guess the Shell CrosswordThere is a shell, there is a way.It's FOSSAbhishek Prakash💡 Quick Handy Tip
    If you are using Vivaldi, you can rename tabs by simply double-clicking on the tab title and entering a name. Before doing that, ensure that double-click tab rename is enabled in the settings.
    Open Settings and go to the Tabs section. Here, check whether the double-click action is set to "Rename tab".
    This is useful when the tab names are taking up too much space, this way, you can give a nickname to easily identify the tab.
    🤣 Meme of the Week
    It's still going strong thanks to Linux! 💪
    🗓️ Tech Trivia
    On June 14, 1822, Charles Babbage presented a paper to the Royal Astronomical Society proposing a design for a machine he called the Difference Engine, the first significant example of a mechanical computing device.
    🧑‍🤝‍🧑 FOSSverse Corner
    There is a long-running discussion surrounding the bias against Ubuntu. Do you have insights to add?
    Why do people have such an unreasonable bias against Ubuntu?I saw this post on Reddit this morning and thought I’d share. I’ve posted something similar myself. Why do people hate Ubuntu so much? : r/linux When I switched to Linux 4 years ago, I used Pop OS as my first distro. Then switched to Fedora and used it for a long time until recently I switched again. This time I finally experienced Ubuntu. I know it’s usually the first distro of most of the users, but I avoided it because I heard people badmouth it a lot for some reason and I blindly believe…It's FOSS Communitypdecker❤️ With love
    Please share it with your Linux-using friends and encourage them to subscribe (hint: it's here).
    Share the articles in Linux Subreddits and community forums.
    Follow us on Google News and stay updated in your News feed.
    Opt for It's FOSS Plus membership and support us 🙏
    Enjoy FOSS 😄
  2. by: Sreenath
    Wed, 04 Jun 2025 12:59:54 GMT

    In an earlier article, I wrote about using plugins in Obsidian. In this one, let me share a few of my favorite plugins. I recommend them but only use the ones that fit your needs.
    Just to recall, Obsidian has two kinds of plugins:
    Core plugins: Officially developed and maintained by the Obsidian team. Community Plugins: Created by users in the Obsidian community 🚧Note that some plugins may make your Markdown notes fully readable only in Obsidian as they add extra features that are not available in usual Markdown. This can be a vendor lock in. Use plugins only according to your needs.Essential Core Plugins
    At the time of writing this article, I see 28 core plugins in my Obsidian installation.
    I have picked only a handful of them. It doesn't mean others are not good. All core plugins have some use case for a particular set of users!
    Several of the plugins I discuss here are enabled by default. But these plugins have settings of their own and I share these settings that have enhanced my note management experience in Obsidian.
    ✋Non-FOSS Warning! Obsidian is not an open source software but it is loved and used by many open source developers and Linux users.Backlinks
    The backlinks are among Obsidian's greatest features. It is crucial for managing interconnected notes and data.
    I know that the backlink plugin is enabled by default but there is a useful feature that you'll have to manually enable. It is “Show backlinks at the bottom of notes” option.
    Enable it by going to Backlinks plugin settings.
    Enable backlinksNow, under each note, backlinks will be shown.
    0:00 /0:18 1× Backlinks in Obsidian
    It is particularly useful if you are creating new notes from a single place like Daily Notes, which is our next plugin!
    Daily Notes
    Daily Notes is like diary pages. It will create a Markdown page for each day and you can write your thoughts here.
    By default, you can access the daily notes from the Obsidian ribbon menu. But a more efficient way is to open daily notes whenever you open Obsidian.
    Go to the Daily Notes settings. Here, enable the "Open daily note on startup" toggle button.
    Daily Notes SettingsIn the screenshot above, you can see some other settings have been changed.
    Date Format: How the title of the daily note appear. You can get the date format options here. New file location: I have created a separate folder called Journals in my Obsidian vault to store all the daily notes. Page Preview
    This is enabled by default for you. With this plugin, you can hover over a note while pressing the CTRL key to get a preview.
    You can also quickly edit the note in the preview or go to another sub-preview, etc. Very useful tool if you are deep into note interlinking.
    0:00 /0:23 1× Preview page in Obsidian
    Slash Commands
    This plugin is disabled by default. Go to the Core Plugins in Obsidian settings and enable this plugin.
    Once enabled, you can press the / key when typing a note to access commands. For example, insert attachment, insert code block, etc. A simple preview is shown in the below video.
    0:00 /0:24 1× Slash command in Obsidian
    Notion, Ghost and many modern editors use this feature.|
    Web Viewer
    This is a cool plugin that allows you to visit web links from within Obsidian. More than that, you can save a website to vault using this core plugin.
    It is not enabled by default, so do that first. Once enabled, click on the settings gear adjacent to the plugin to go to the plugin settings.
    Web viewer settings buttonHere, you can set further options like where to save the page by default, search engine, etc.
    Web Viewer SettingsYou can see some examples in the video below.
    Web viewer in Obsidian
    Interesting community plugins I like
    Now, let's take a look at some cool community plugins that can enhance your knowledge base, as they do for me.
    Calendar
    If you are a daily notes writer, this is a must-have plugin. Even if you are not into diary writing, it is still pretty cool to have a calendar placed on Obsidian.
    Calendar ViewYou can visit notes of any date simply by clicking on that date. If there is no note, it will prompt you to create one!
    There are many more features that you can explore, like a meter to track how much you have written on a particular day.
    💡If you press CTRL key and hover over a date, those day's notes will be shown in a preview.Calendar PluginQuickAdd
    QuickAdd is a much needed automation tool in Obsidian. It offers features like templates, captures, macros, multis, etc. which essentially allow users to create notes quickly.
    For example, the template feature can create a note based on a given template in a specified directory. All you have to do is invoke the command.
    The screenshot below shows three templates created by me for my use cases.
    Created TemplatesUse the settings gear to change additional settings like where to create a note, open the note automatically, etc.
    The video below shows how it quickly creates a note on a specified location.
    0:00 /0:13 1× QuickAdd Working
    With macros, you can even assign key bindings to make your workflow even faster!
    QuickAddIconize
    Emojis and icons are all the rage these days. From GitHub to changelogs, you'll see them everywhere. How about adding them to Obsidian?
    Obsidian organizes notes into folders and subfolders. With the Iconize plugin, you can set icons to folders.
    Icons applied to foldersYou can add new icon packs by going to the Settings → Community plugins → Installed plugins -→Iconize -→Settings gear → Icon packs.
    Icon packs added in IconizeRight-click on a folder or file and use the Change icon option to add a new icon to that folder/file.
    IconizeHighlightr
    Remember highlighting important stuff in a book? You can do the same in your notes on Obsidian.
    Highlight text in Vimeo
    It also provides different styles of highlighting, all selectable from the plugin settings.
    HighlightrCallout Manager and Callout Suggestions
    These are two different plugins which, when used together, are a great way to add callouts.
    📋If you are not aware, callout blocks can improve your notes by making specific visually separated blocks for tips, warnings, etc. Like this 'note' callout block I used for telling you about callouts.By default, obsidian has some callouts like Note, Tips, Warnings, etc.
    Callout Manager allows you to create more callout blocks. Say you want to create a new callout block called "Read Later" and assign a particular color and icon. You can do that with this plugin.
    Callout blocks from Callout ManagerThe Callout Suggestions plugins will help you access these defined callout blocks easily in your notes.
    You can press >! and a dropdown menu will appear asking what block to use.
    0:00 /0:23 1× Inserting Callouts in Obsidian
    PDF++
    Annotating a PDF document is a must-have feature in any PDF viewer. How about doing it in Obsidian? PDF++ is a great tool for this purpose.
    You can add your PDF notes to your vault and start annotating!
    Once the plugin is installed and enabled, make sure you have enabled the PDF editing feature.
    PDF++ plugin settingsNow, you can select text and then right-click to get the annotation menu. Unlike other plugins, this has a slight learning curve and plenty of options to tweak. Use it carefully.
    Annotate PDF in ObsidianPDF++LanguageTool Integration
    This is for those who want to create notes without grammatical errors or spelling mistakes.
    LanguageTool is a proofreading software that checks the grammar, style, and spelling in over 20 languages. With this plugin, you can get error notifications for your text in Obsidian.
    If you have a premium subscription for LanguageTool, you can use it here as well.
    Spell check in Obsidian🚧You should disable the Obsidian spell check (Settings → Editor → Behavior → Spell Check) feature if you want to use this plugin.LanguageTool IntegrationTasks
    You can use Obsidian as a task/to-do manager. That's no secret.
    However, Tasks is plugin that can do a lot more than just simple to-dos. It supports scheduling tasks, recurring tasks etc.
    You can also list all the tasks, today's tasks, etc. by using simple tasks specific queries.
    To create a task, you can enter CTRL+P (open command in Obsidian) and search for Tasks.
    Using the Tasks plugin to create tasksYou can retrieve tasks as shown in the small video below:
    0:00 /0:28 1× Retrieve tasks in Obsidian
    TasksExcalidraw
    Excalidraw is a plugin to edit and view Excalidraw drawings in Obsidian. This sketching solution can make wonderful diagrams within Obsidian, embed drawings into your documents and much more.
    An Excalidraw drawing in ObsidianYou can find a huge list of settings for this plugin in the Obsidian settings. If you are into creative note-taking, look no further.
    ExcalidrawHonorable mentions
    Style Settings: Allows you to tweak several themes in Obsidian. One such theme that I am using and is heavily customizable is Border. Git: Allows you to version control your notes. You can pull changes from and push changes to GitHub, GitLab, etc. Dataview: Dataview is a live index and query engine over your personal knowledge base. You can query data from your Obsidian vault. QuickAdd: QuickAdd is like a super-smart shortcut button in Obsidian that lets you quickly create new notes or add stuff to existing ones using pre-made templates and automated steps you set up. Kanban: This plugins created a Markdown-based Kanban board. There are many other plugins, enabled/disabled in a default Obsidian installation. What I mentioned above are a couple of special ones. Don't forget to read the descriptions and try others too.
    Now I let you share your favorite Obsidian plugin in the comments.
  3. by: Sreenath
    Mon, 26 May 2025 00:50:21 GMT

    Obsidian has emerged as a powerful and flexible knowledge management tool, despite NOT being an open source product.
    Using plugins is just one of the many tips that you can follow to get the most out of Obsidian.
    However, there is a small catch when it comes to compatibility. If you have used several Obsidian-specific plugins, then your notes may not be fully compatible in other plain markdown editors.
    In this article, we will take a look at Plugins in Obsidian, how you can install it, and also some essential plugins that can make your learning more effective.
    But first, a quick heads-up: Obsidian offers two types of plugins:
    Core Plugins: These are officially developed and maintained by the Obsidian team. While limited in number, they are stable and deeply integrated. Community Plugins: Created by users in the Obsidian community, these plugins offer a wide variety of features, although they aren’t officially supported by the core team. 🚧Note that some plugins may make your Markdown notes fully readable only in Obsidian. This can be a vendor lock in. Use plugins only according to your needs.Using the core plugins
    Core plugins are officially built by Obsidian. They will come pre-installed. So, naturally, that is the recommended method of installation when it comes to plugins.
    Core plugins are displayed in Obsidian settings page. Click on the settings gear icon at the bottom of the Obsidian app window to go to the settings.
    Click on the Settings gearIn the settings, select Core Plugins to view the Core plugins.
    Select Core PluginsMost of the core plugins are enabled when you install the Obsidian app. But some plugins will be disabled by default.
    I have included a brief description under each plugin to know what the plugin does and enable/disable as needed.
    Suggested Read 📖
    13 Useful Tips on Organizing Notes Better With ObsidianUtilize Obsidian knowledge tool more effectively with these helpful tips and tweaks.It's FOSSSreenathUsing the community plugins
    I’ve found that community plugins are one of the best ways to boost Obsidian’s capabilities. There’s a massive collection to choose from, and at the time of writing this, there are 2,430 community plugins available for installation.
    These plugins are built by third-party developers and go through an initial review process before being listed.
    However, since they have the same level of access as Obsidian itself, it’s important to be cautious. If privacy and security are essential for your work, I suggest doing a bit of homework before installing any plugin, just to be safe.
    Disable the restricted mode
    To protect you from unofficial plugins, Obsidian starts with a restricted mode, where the community plugins are disabled. To install community plugins, you need to disable the restricted mode first, just like the auto blocker in some Android phones to block app installations from unauthorized sources.
    Go to the Obsidian settings and select the Community Plugins option. Here, click on the "Turn on community plugins" button.
    Turn on community pluginsThis will disable the restricted mode. And, you are all set! 😄
    Install community plugins
    Once the restricted mode is disabled, you can browse for community plugins and get them installed.
    Click on the Browse buttonUse the Browse button to go to the plugins page, as shown in the screenshot above. You will reach the plugins store, that lists 2000+ plugins.
    Do not worry about the numbers, just search for what you need, or browse through some suggested options, just like I did.
    Plugins StoreWhen you have spotted a plugin that matches your need, click on it. Now, to install that plugin, use the Install button.
    Click on the Install buttonOnce installed, you can see two additional buttons called Enable and Uninstall. As the name suggests, they are for enabling a plugin or uninstalling a plugin.
    Enable/Uninstall a pluginThis can be done more efficiently from the Obsidian settings. For this, go to the Settings → Community plugins → Installed plugins. Here, use the toggle button to enable a plugin.
    Enable Plugins in SettingsThis section lists all the installed community plugins. You can enable/disable, uninstall, access plugin settings, assign a keybinding, or donate to that particular plugin.
    Manually install plugins
    🚧I do not recommend this method, since most of the plugins are available in Obsidian store and have gone through an initial review.Even though not recommended, if you want to install a plugin, manually, for version compatibility or other personal reasons, make sure to source it from the official repositories or websites.
    If it is on GitHub, go to the release page of the plugin GitHub repository and download main.js, manifest.json, and style.css files.
    Download Plugin filesNow, create a directory with the name of the project in the <Your-obsidian-vault>/.obsidian/plugins directory. Press CTRL+H to view hidden files.
    Paste plugin contentsIn my case, I tried Templater. Next, I transfer the downloaded files to this project directory. Now, open Obsidian and go to the Settings → Community plugins and enable the new plugin.
    Enable manually installed pluginInstall beta version of plugins
    This is not for regular users, but for those who want to be testers and reviewers of beta plugins. I usually do this to test interesting things or help with the development of plugins I believe in.
    We are using the BRAT (Beta Reviewers Auto-Update Tool) to install and update beta versions of Obsidian plugins.
    First, install the BRAT plugin from the Obsidian plugins store and enable it.
    Install BRAT PluginNow, go to the GitHub repository of the plugin you want to install the beta version of. Copy the URL of the repository.
    Select the BRAT plugin from Settings → Community plugins and click on the “Add beta plugin” button.
    Click on the "Add beta plugin" buttonHere, add the GitHub URL, select a version from the list, and click on the Add Plugin button.
    Add URL and select versionYou can see that the plugin has been added with BRAT. Since we selected a specific version, it is shown as frozen and cannot be updated. Select Latest as version to get updates.
    Beta plugin added using BRATUpdate plugins
    To update community plugins, go to Obsidian settings and select Community plugins.
    Here, click on the Check for updates button.
    If there is an update available, it will notify you.
    There is an update available for one plugin.Click on Update All to update all the plugins that have an update available. Or, scroll down and update individual plugins by clicking on the Update button.
    Move community plugins
    You can copy selected or all plugins from your directory to another vault to avoid installing everything from scratch.
    Go to the <your-obsidian-vault>/.obsidian/plugins directory. Now, copy directories of those plugins you want to use in another vault.
    Copy those directories to your new plugin directory for your other vault (or the newer vault) <your-new-vault>/.obsidian/plugins directory.
    If there is no plugins directory in the new vault, create one. Once you open the new vault, you will be asked to trust the plugins.
    If it is you, who copied all the folders and no others are involved, click on the "Trust author and enable plugins" button.
    Or you can use the "Browse Vault in restricted mode" and then enable the plugins by going to Settings → Community plugins → Turn on Community plugins → Enable plugins.
    Plugin security notificationIn both cases, you don't have to install the plugin from scratch.
    Don't forget to enable the plugins through Settings → Community plugins to start using them.
    Remove a plugin
    Removing a plugin is easy. Go to the community plugins in settings and click on the delete button (bin icon) adjacent to the plugin you want to remove.
    Remove a pluginOr, if you just want to disable all community plugins, you can turn on the restricted mode. Click on the Turn on and reload button in community plugins settings.
    Turn on restricted modeSo, if you turn off the restricted mode, all the installed plugins will be enabled. Pretty easy, I know, right?
    Another way to remove plugins is to delete specific folders in the plugins directory, but it is unnecessary unless you are testing something specific.
    🚧Don't use this method for everything since it is safer to do so from within Obsidian.Go to the <your-obsiidian-vault>/.obsidian/plugins directory and remove the directory that has the name of the plugin you want to remove.
    Now open Obsidian and you won't see that plugin. Voila!
    Enjoy using Obsidian
    I have shared many more Obsidian tips to improve your experience with this wonderful too.
    13 Useful Tips on Organizing Notes Better With ObsidianUtilize Obsidian knowledge tool more effectively with these helpful tips and tweaks.It's FOSSSreenathPlugin is just part of how you can go beyond the obvious and default Obsidian offering. I hope you found this tutorial helpful. Enjoy.
  4. by: LHB Community
    Mon, 12 May 2025 10:43:21 +0530

    Automating tasks is great, but what's even better is knowing when they're done or if they've gotten derailed.
    Slack is a popular messaging tool used by many techies. And it supports bots that you can configure to get automatic alerts about things you care about.
    Web server is down? Get an alert. Shell script completes running? Get an alert.
    Yes, that could be done too. By adding Slack notifications to your shell scripts, you can share script outcomes with your team effortlessly and respond quickly to issues and stay in the loop without manual checks. It lets you monitor automated tasks without constantly checking logs. 
    🚧I am assuming you already use Slack and you have a fair idea about what a Slack Bot is. Of course, you should have at least basic knowledge of Bash scripting.The Secret Sauce: curl and Webhooks
    The magic behind delivering Slack notifications from shell scripts is Slack's Incoming Webhooks and the curl command line tool.
    Basically, everything is already there for you to use, it just needs some setup for connections. I found it pretty easy, and I'm sure you will too.
    Here are the details for what webhooks and the command line tool is for:  
    Incoming Webhooks: Slack allows you to create unique Webhook URLs for your workspace that serve as endpoints for sending HTTP POST requests containing messages.   curl: This powerful command-line tool is great for making HTTP requests. We'll use it to send message-containing JSON payloads to Slack webhook URLs. Enabling webhooks on Slack side
    Create a Slack account (if you don't have it already) and (optionally) create a Slack workspace for testing. Go to api.slack.com/apps and create a new app. Open the application and, under the “Features” section, click on “Incoming Webhooks” and “Activate Incoming Webhooks”. Under the same section, scroll to the bottom. You’ll find a button “Add New Webhook to Workspace”. Click on it and add the channel. Test the sample CURL request.  Important: The CURL command you see above also has the webhook URL. Notice that https://hooks.slack.com/services/xxxxxxxxxxxxx things? Note it down.
    Sending Slack notifications from shell scripts
    Set SLACK_WEBHOOK_URL environment variable in your .bashrc file as shown below.
    Use the webhook URL you got from Slack in the previous stepCreate a new file, notify_slack.sh, under your preferred directory location.
    # Usage: notify_slack "text message" # Requires: SLACK_WEBHOOK_URL environment variable to be set notify_slack() {     local text="$1"     curl -s -X POST -H 'Content-type: application/json' \         --data "{\"text\": \"$text\"}" \         "$SLACK_WEBHOOK_URL" }Now, you can simply source this bash script wherever you need to notify Slack. I created a simple script to check disk usage and CPU load.
    source ~/Documents/notify_slack.sh  disk_usage=$(df -h / | awk 'NR==2 {print $5}') # Get CPU load average cpu_load=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d',' -f1 | xargs) hostname=$(hostname) message="*System Status Report - $hostname*\n* Disk Usage (/): $disk_usage\n* CPU Load (1 min): $cpu_load" # Send the notification notify_slack "$message"Running this script will post a new message on the Slack channel associated with the webhook.
    Best Practices 
    It is crucial to think about security and limitations when you are integrating things, no matter how insignificant you think it is. So, to avoid common pitfalls, I recommend you to follow these two tips:
    Avoid direct hardware encoding in publicly shared scripts. Consider using environment variables or configuration files. Be aware of Slack's rate limitation for incoming webhooks, especially if your scripts may trigger notifications frequently. You may want to send notifications only in certain circumstances (for example, only on failure or only for critical scripts). Conclusion
    What I shared here was just a simple example. You can utilize cron in the mix and periodically send notifications about server stats to Slack. You put in some logic to get notified when disk usage reaches a certain stage.
    There can be many more use cases and it is really up to you how you go about using it. With the power of Incoming Webhooks and curl, you can easily deliver valuable information directly to your team's communication center. Happy scripting!
    Bhuwan Mishra is a Fullstack developer, with Python and Go as his tools of choice. He takes pride in building and securing web applications, APIs, and CI/CD pipelines, as well as tuning servers for optimal performance. He also has a passion for working with Kubernetes.
  5. by: Abhishek Prakash
    Thu, 17 Apr 2025 06:27:20 GMT

    It's the release week. Fedora 42 is already out. Ubuntu 25.04 will be releasing later today along with its flavors like Kubuntu, Xubuntu, Lubuntu etc.
    In the midst of these two heavyweights, MX Linux and Manjaro also quickly released newer versions. For Manjaro, it is more of an ISO refresh, as it is a rolling release distribution.
    Overall, a happening week for Linux lovers 🕺
    💬 Let's see what else you get in this edition
    Arco Linux bids farewell. Systemd working on its own Linux distro. Looking at the origin of UNIX. And other Linux news, tips, and, of course, memes! This edition of FOSS Weekly is supported by Aiven. ❇️ Aiven for ClickHouse® - The Fastest Open Source Analytics Database, Fully Managed
    ClickHouse processes analytical queries 100-1000x faster than traditional row-oriented systems. Aiven for ClickHouse® gives you the lightning-fast performance of ClickHouse–without the infrastructure overhead.
    Just a few clicks is all it takes to get your fully managed ClickHouse clusters up and running in minutes. With seamless vertical and horizontal scaling, automated backups, easy integrations, and zero-downtime updates, you can prioritize insights–and let Aiven handle the infrastructure.
    Managed ClickHouse database | AivenAiven for ClickHouse® – fully managed, maintenance-free data warehouse ✓ All-in-one open source cloud data platform ✓ Try it for freeAiven📰 Linux and Open Source News
    The Arch-based ArcoLinux has been discontinued. Fedora 42 has been released with some rather interesting changes. Manjaro 25.0 'Zetar' is here, offering a fresh image for new installations. ParticleOS is Systemd's attempt at a Linux distribution.
    ParticleOS: Systemd’s Very Own Linux Distro in MakingA Linux distro from systemd? Sounds interesting, right?It's FOSS NewsSourav Rudra🧠 What We’re Thinking About
    Linus Torvalds was told that Git is more popular than Linux.
    Git is More Popular than Linux: TorvaldsLinus Torvalds reflects on 20 years of Git.It's FOSS NewsSourav Rudra🧮 Linux Tips, Tutorials and More
    11 vibe coding tools to 10x your dev workflow. Adding comments in bash scripts. Understand the difference between Pipewire and Pulseaudio. Make your Logseq notes more readable by formatting them. That's a new series focusing on Logseq. From UNIX to today’s tech. Learn how it shaped the digital world. Desktop Linux is mostly neglected by the industry but loved by the community. For the past 12 years, It's FOSS has been helping people use Linux on their personal computers. And we are now facing the existential threat from AI models stealing our content.
    If you like what we do and would love to support our work, please become It's FOSS Plus member. It costs $24 a year (less than the cost of a burger meal each month) and you get an ad-free reading experience with the satisfaction of helping the desktop Linux community.
    Join It's FOSS Plus 👷 Homelab and Maker's Corner
    These 28 cool Raspberry Pi Zero W projects will keep you busy.
    28 Super Cool Raspberry Pi Zero W Project IdeasWondering what to do with your Raspberry Pi Zero W? Here are a bunch of project ideas you can spend some time on and satisfy your DIY craving.It's FOSSChinmay✨ Apps Highlight
    You can download YouTube videos using Seal on Android.
    Seal: A Nifty Open Source Android App to Download YouTube Video and AudioDownload YouTube video/music (for educational purpose or with consent) with this little, handy Android app.It's FOSS NewsSourav Rudra📽️ Videos I am Creating for You
    See the new features of Ubuntu 25.04 in action in this video.
    Subscribe to It's FOSS YouTube Channel🧩 Quiz Time
    Our Guess the Desktop Environment Crossword will test your knowledge.
    Guess the Desktop Environment: CrosswordTest your desktop Linux knowledge with this simple crossword puzzle. Can you solve it all correctly?It's FOSSAbhishek PrakashAlternatively, guess all of these open source privacy tools correctly?
    Know The Best Open-Source Privacy ToolsDo you utilize open-source tools for privacy?It's FOSSAnkush Das💡 Quick Handy Tip
    You can make Thunar open a new tab instead of a new window. This is good in situations when opening a folder from other apps, like a web browser. This reduces screen clutter.
    First, click on Edit ⇾ Preferences. Here, go to the Behavior tab. Now, under "Tabs and Windows", enable the first checkbox as shown above or all three if you need the functionality of the other two.
    🤣 Meme of the Week
    We are generally a peaceful bunch, for the most part. 🫣
    🗓️ Tech Trivia
    On April 16, 1959, John McCarthy publicly introduced LISP, a programming language for AI that emphasized symbolic computation. This language remains influential in AI research today.
    🧑‍🤝‍🧑 FOSSverse Corner
    FOSSers are discussing VoIP, do you have any insights to add here?
    A discussion over Voice Over Internet Protocol (VoIP)I live in a holiday village where we have several different committees and meetings, for those not present to attend the meetings we do video conférences using voip. A few years back the prefered system was skype, we changed to whatsapp last year as we tend to use its messaging facilities and its free. We have a company who manages our accounts, they prefer using teams, paid for version as they can invoice us for its use … typical accountant. My question, does it make any difference in band w…It's FOSS Communitycallpaul.eu (Paul)❤️ With love
    Share it with your Linux-using friends and encourage them to subscribe (hint: it's here).
    Share the articles in Linux Subreddits and community forums.
    Follow us on Google News and stay updated in your News feed.
    Opt for It's FOSS Plus membership and support us 🙏
    Enjoy FOSS 😄
  6. by: Juan Diego Rodríguez
    Wed, 12 Feb 2025 14:15:28 +0000

    We’ve been able to get the length of the viewport in CSS since… checks notes… 2013! Surprisingly, that was more than a decade ago. Getting the viewport width is as easy these days as easy as writing 100vw, but what does that translate to, say, in pixels? What about the other properties, like those that take a percentage, an angle, or an integer?
    Think about changing an element’s opacity, rotating it, or setting an animation progress based on the screen size. We would first need the viewport as an integer — which isn’t currently possible in CSS, right?
    What I am about to say isn’t a groundbreaking discovery, it was first described amazingly by Jane Ori in 2023. In short, we can use a weird hack (or feature) involving the tan() and atan2() trigonometric functions to typecast a length (such as the viewport) to an integer. This opens many new layout possibilities, but my first experience was while writing an Almanac entry in which I just wanted to make an image’s opacity responsive.
    Resize the CodePen and the image will get more transparent as the screen size gets smaller, of course with some boundaries, so it doesn’t become invisible:
    CodePen Embed Fallback This is the simplest we can do, but there is a lot more. Take, for example, this demo I did trying to combine many viewport-related effects. Resize the demo and the page feels alive: objects move, the background changes and the text smoothly wraps in place.
    CodePen Embed Fallback I think it’s really cool, but I am no designer, so that’s the best my brain could come up with. Still, it may be too much for an introduction to this typecasting hack, so as a middle-ground, I’ll focus only on the title transition to showcase how all of it works:
    CodePen Embed Fallback Setting things up
    The idea behind this is to convert 100vw to radians (a way to write angles) using atan2(), and then back to its original value using tan(), with the perk of coming out as an integer. It should be achieved like this:
    :root { --int-width: tan(atan2(100vw, 1px)); } But! Browsers aren’t too keep on this method, so a lot more wrapping is needed to make it work across all browsers. The following may seem like magic (or nonsense), so I recommend reading Jane’s post to better understand it, but this way it will work in all browsers:
    @property --100vw { syntax: "<length>"; initial-value: 0px; inherits: false; } :root { --100vw: 100vw; --int-width: calc(10000 * tan(atan2(var(--100vw), 10000px))); } Don’t worry too much about it. What’s important is our precious --int-width variable, which holds the viewport size as an integer!
    CodePen Embed Fallback Wideness: One number to rule them all
    Right now we have the viewport as an integer, but that’s just the first step. That integer isn’t super useful by itself. We oughta convert it to something else next since:
    different properties have different units, and we want each property to go from a start value to an end value. Think about an image’s opacity going from 0 to 1, an object rotating from 0deg to 360deg, or an element’s offset-distance going from 0% to 100%. We want to interpolate between these values as --int-width gets bigger, but right now it’s just an integer that usually ranges between 0 to 1600, which is inflexible and can’t be easily converted to any of the end values.
    The best solution is to turn --int-width into a number that goes from 0 to 1. So, as the screen gets bigger, we can multiply it by the desired end value. Lacking a better name, I call this “0-to-1” value --wideness. If we have --wideness, all the last examples become possible:
    /* If `--wideness is 0.5 */ .element { opacity: var(--wideness); /* is 0.5 */ translate: rotate(calc(wideness(400px, 1200px) * 360deg)); /* is 180deg */ offset-distance: calc(var(--wideness) * 100%); /* is 50% */ } So --wideness is a value between 0 to 1 that represents how wide the screen is: 0 represents when the screen is narrow, and 1 represents when it’s wide. But we still have to set what those values mean in the viewport. For example, we may want 0 to be 400px and 1 to be 1200px, our viewport transitions will run between these values. Anything below and above is clamped to 0 and 1, respectively.
    In CSS, we can write that as follows:
    :root { /* Both bounds are unitless */ --lower-bound: 400; --upper-bound: 1200; --wideness: calc( (clamp(var(--lower-bound), var(--int-width), var(--upper-bound)) - var(--lower-bound)) / (var(--upper-bound) - var(--lower-bound)) ); } Besides easy conversions, the --wideness variable lets us define the lower and upper limits in which the transition should run. And what’s even better, we can set the transition zone at a middle spot so that the user can see it in its full glory. Otherwise, the screen would need to be 0px so that --wideness reaches 0 and who knows how wide to reach 1.
    CodePen Embed Fallback We got the --wideness. What’s next?
    For starters, the title’s markup is divided into spans since there is no CSS-way to select specific words in a sentence:
    <h1><span>Resize</span> and <span>enjoy!</span></h1> And since we will be doing the line wrapping ourselves, it’s important to unset some defaults:
    h1 { position: absolute; /* Keeps the text at the center */ white-space: nowrap; /* Disables line wrapping */ } The transition should work without the base styling, but it’s just too plain-looking. They are below if you want to copy them onto your stylesheet:
    CodePen Embed Fallback And just as a recap, our current hack looks like this:
    @property --100vw { syntax: "<length>"; initial-value: 0px; inherits: false; } :root { --100vw: 100vw; --int-width: calc(10000 * tan(atan2(var(--100vw), 10000px))); --lower-bound: 400; --upper-bound: 1200; --wideness: calc( (clamp(var(--lower-bound), var(--int-width), var(--upper-bound)) - var(--lower-bound)) / (var(--upper-bound) - var(--lower-bound)) ); } OK, enough with the set-up. It’s time to use our new values and make the viewport transition. We first gotta identify how the title should be rearranged for smaller screens: as you saw in the initial demo, the first span goes up and right, while the second span does the opposite and goes down and left. So, the end position for both spans translates to the following values:
    h1 { span:nth-child(1) { display: inline-block; /* So transformations work */ position: relative; bottom: 1.2lh; left: 50%; transform: translate(-50%); } span:nth-child(2) { display: inline-block; /* So transformations work */ position: relative; bottom: -1.2lh; left: -50%; transform: translate(50%); } } Before going forward, both formulas are basically the same, but with different signs. We can rewrite them at once bringing one new variable: --direction. It will be either 1 or -1 and define which direction to run the transition:
    h1 { span { display: inline-block; position: relative; bottom: calc(1.2lh * var(--direction)); left: calc(50% * var(--direction)); transform: translate(calc(-50% * var(--direction))); } span:nth-child(1) { --direction: 1; } span:nth-child(2) { --direction: -1; } } CodePen Embed Fallback The next step would be bringing --wideness into the formula so that the values change as the screen resizes. However, we can’t just multiply everything by --wideness. Why? Let’s see what happens if we do:
    span { display: inline-block; position: relative; bottom: calc(var(--wideness) * 1.2lh * var(--direction)); left: calc(var(--wideness) * 50% * var(--direction)); transform: translate(calc(var(--wideness) * -50% * var(--direction))); } As you’ll see, everything is backwards! The words wrap when the screen is too wide, and unwrap when the screen is too narrow:
    CodePen Embed Fallback Unlike our first examples, in which the transition ends as --wideness increases from 0 to 1, we want to complete the transition as --wideness decreases from 1 to 0, i.e. while the screen gets smaller the properties need to reach their end value. This isn’t a big deal, as we can rewrite our formula as a subtraction, in which the subtracting number gets bigger as --wideness increases:
    span { display: inline-block; position: relative; bottom: calc((1.2lh - var(--wideness) * 1.2lh) * var(--direction)); left: calc((50% - var(--wideness) * 50%) * var(--direction)); transform: translate(calc((-50% - var(--wideness) * -50%) * var(--direction))); } And now everything moves in the right direction while resizing the screen!
    CodePen Embed Fallback However, you will notice how words move in a straight line and some words overlap while resizing. We can’t allow this since a user with a specific screen size may get stuck at that point in the transition. Viewport transitions are cool, but not at the expense of ruining the experience for certain screen sizes.
    Instead of moving in a straight line, words should move in a curve such that they pass around the central word. Don’t worry, making a curve here is easier than it looks: just move the spans twice as fast in the x-axis as they do in the y-axis. This can be achieved by multiplying --wideness by 2, although we have to cap it at 1 so it doesn’t overshoot past the final value.
    span { display: inline-block; position: relative; bottom: calc((1.2lh - var(--wideness) * 1.2lh) * var(--direction)); left: calc((50% - min(var(--wideness) * 2, 1) * 50%) * var(--direction)); transform: translate(calc((-50% - min(var(--wideness) * 2, 1) * -50%) * var(--direction))); } Look at that beautiful curve, just avoiding the central text:
    CodePen Embed Fallback This is just the beginning!
    It’s surprising how powerful having the viewport as an integer can be, and what’s even crazier, the last example is one of the most basic transitions you could make with this typecasting hack. Once you do the initial setup, I can imagine a lot more possible transitions, and --widenesss is so useful, it’s like having a new CSS feature right now.
    I expect to see more about “Viewport Transitions” in the future because they do make websites feel more “alive” than adaptive.
    Typecasting and Viewport Transitions in CSS With tan(atan2()) originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Important Information

Terms of Use Privacy Policy Guidelines We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.