My Linux Development Environment of 2018
alt=”brpaz profile image”/>
In this blog post I will talk a bit about the setup and software of my personal laptop, powered by Linux. This is somewhat inspired by this post , but for a Linux based setup.
I wont list all the applications I have installed on the machine, but only the ones I consider relevant and more focused on Development.
Right now my machine is running Linux Mint 18.3 but I am thinking of moving back to Ubuntu 18.04 when its out. I dont really have any complains with Mint, but with with the replacement of Unity with Gnome 3 I want to give it a try.
Boostnote — My main note taking application. I use it mostly to store code snippets and reference material for my development activities. Its open source, cross platform and works completely offline. I wish to have an easier way to sync between multiple machines but since the notes are stored as CSON files, I am using a private Git repo to sync.
Simplenote — I use Simplenote as my “scratchpad”, for quick notes and thoughts. mostly when on my mobile.
Cerebro — Cerebro is an open source cross platform launcher similar to Spotlight and Alfred for Mac. The maintenance is kinda low atm and I felt the need to fork it, but it works pretty well. It doesnt have the same amount of plugins as Alfred does, but I have been developing some.
Google Chrome — My primary browser of choice.
Firefox — My secondary browser.
Min — Min is a minimalist webbrowser. Since Linux doesn’t have anything like Fenetre for Mac, I use it when I want to browse documentation, follow a tutorial or watch a video side in a Picture in Picture / side by side mode.
Dropbox — For sharing files.
Mailspring — Email client.
Corebird — Twitter Desktop client
Ramme — Instagram desktop client
Caprine — Facebook messenger desktop client
Whatsapp Desktop — WhatsApp desktop client with built in notifications and system tray integration.
Slack — For chat and engage with communities.
Wireshark — For network sniffing. Useful when developing to see the communication between multiple applications.
Graphics and Multimedia
Pinta — Pinta is a free, open source program for drawing and image editing. Its my image editor of choice. While Gimp is the most popular image editor on Linux, I found Pinta to much more simpler to use and resembles more with Photostop.
XnConvert — a powerful and free cross-platform batch image processor, allowing you to combine over 80 actions.
Draw.io — Draw.io is my app of choice for designing all kinds of diagrams, from flowcharts, to sequence diagrams or even wireframes. Its 100% free to use and can be integrated with Google Drive.
Shutter — For taking screenshots and quickly annotate them with arrows, boxes etc. It also have some nice effects like blur sensible parts of an image.
ffmulticonverter — For converting images / videos between multiple formats.
Peek — Peek allows to record the screen and save as GIF format. very useful for creating demo gifs for put on project readme files for example.
pick — Color picker
Trimage — Image compression tool
Sound and Video
VLC — my favorite media player. Version 3 have chromecast support built in which is even better.
Kdenlive — for video editing
Kazam — To record screencasts
Spotify — For listening to my favorite music.
Bleachbit — System cleaner utility.
Stacer — Linux System Optimizer and Monitoring
Caffeine — To keep my machine awake
Pullover — To receive Pushover notifications on my desktop
CopyQ — To manage my clipboard
Jetbrains (PHPstorm, WebStorm) — My IDE of choice,
Visual studio code — All in one text editor
vim (for editing files on command line)
Tilix — My favorite terminal emulator.
Zsh shell — An feature rich alternative to bash
zplug — To manage zsh plugins.
zsh-completions — Additional completion definitions for Zsh.
Command line utilities
tldr — tldr is an alternative to man pages but only with the essential. Great way of quickly find any command syntax.
yadm — Dotfiles manager
fasd — Fasd is a command-line productivity booster. Fasd offers quick access to files and directories for POSIX shells. It is inspired by tools like autojump , z and v . Fasd keeps track of files and directories you have accessed, so that you can quickly reference them in the command line.
fzf — A command-line fuzzy finder
the silver searcher — A code-searching tool similar to ack, but faster
lf — A command line file manager.
pandoc — convert between multiple file types from the command line.
pwgen — Password generator
lnav — An advanced log file viewer for the small-scale
trash-cli — trash-cli trashes files recording the original path, deletion date, and permissions.
opn-cli — Opens stuff like websites, files, executables. Cross-platform.
ascicinema — Record and share your terminal sessions, the right way.
hostess — An idempotent command-line utility for managing your /etc/hosts file.
get-port-cli — Get an available port
public-ip-cli — Get your public IP address
i nternal-ip-cli — Get your internal IP address
speedtest-cli — Command line interface for testing internet bandwidth using speedtest.net
fkill-cli — Fabulously kill processes. Cross-platform.
doctoc — Generates table of contents for markdown files inside local git repository. Links are compatible with anchors generated by github or other sites.
I use Docker extensively in my development environment. I still have common runtimes like go, php, node (with nvm ) and ruby (with rvm ) installed in the host.
Docker-compose — Define and run multi-container applications with Docker
Minikube — Run Kubernetes locally
Telepresence — Local development against a remote Kubernetes or OpenShift cluster
ctop — Top-like interface for container metrics
Vagrant — Development Environments Made Easy. I dont Vagrant that much nowadays unless I want to work on infrastucture stuff. (Ex: testing spinning a new cluster or testing an Ansible playbook).
Dnsdock — For managing dns of Docker containers.
how2 — Stack overflow from terminal
Pet — Simple command-line snippet manager. I use it to store the commands I use most.
caniuse-cmd — Caniuse command line tool
hub — hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier.
conventional-changelog — Generate a changelog from git metadata
release-it — CLI release tool for Git repos and npm packages.
git-open — Type
git opento open the GitHub page or website for a repository in your browser.
git-semver — Git plugin for Semantic Versioning
tig — Text-mode interface for git
jq — jq is a lightweight and flexible command-line JSON processor
python-gitlab — GitLab client
overcommit —a tool to manage and configure Git hooks .
tmux and tmuxp — Terminal multiplexer.
gitbook-cli — GitBook’s command line interface
pageres-cli — Capture website screenshots
httpie — Modern command line HTTP client — user-friendly curl alternative with intuitive UI, JSON support, syntax highlighting, wget-like downloads, extensions, etc
yeoman — Yeoman is a tool that allows to scaffold projects from a series of templates.
generator-editorconfig — Generates .editorconfig files.
license — Create licenses from the command-line.
gi — Create useful .gitignore files for your project
travis.rb — Travis CI Client (CLI and Ruby library)
http-server — http-server is a simple, zero-configuration command-line http server. It is powerful enough for production usage, but it’s simple and hackable enough to be used for testing, local development, and learning.
codeclimate-cli — codeclimate is a command line interface for the Code Climate analysis platform. It allows you to run Code Climate engines on your local machine inside of Docker containers.
mycli — A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
json-server — Get a full fake REST API with zero coding in less than 30 seconds.
localtunnel — localtunnel exposes your localhost to the world for easy testing and sharing! No need to mess with DNS or deploy just to have others test out your changes.
mailhog — Web and API based SMTP testing
artilery — Artillery is a modern, powerful & easy-to-use load testing toolkit. Use it to ship scalable applications that stay performant & resilient under high load.
Postman — Postman Makes API Development Simple.
Devdocs-Desktop — DevDocs.io combines multiple API documentations in a fast, organized, and searchable interface. This is an unoffcial desktop app for it.
doctl — A command line tool for DigitalOcean services.
gcloud-sdk — The official sdk to interact with Google Cloud infrastucture.
aws-cli — This package provides a unified command line interface to Amazon Web Services.
ansible — Automate infrasctucture
terraform — Write, Plan, and Create Infrastructure as Code
kubectl — kubectl is a command line interface for running commands against Kubernetes clusters
kubectx — Fast way to switch between clusters and namespaces in kubectl!
kubeval — Validate your Kubernetes configuration files, supports multiple Kubernetes versions
helm — The Kubernetes Package Manager
heroku-cli — The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku.
forge.sh — Define and deploy multi-container apps in Kubernetes, from source
Firebase tools — The Firebase Command Line Tools
dpl — Dpl (dee-pee-ell) is a deploy tool made for continuous deployment.
This is current Development machine. Hope you have find this useful.
I am always looking for ways to improve my workflow, so if you use any tool that you find useful and its not listed here, feel free to comment this post.
Linux can be a very powerful development environment. Its a pity that amazing Mac applications like Alfred or Fenetre doesn’t have a viable Linux alternative. Thats what I miss the most. And I never used a Mac but I feel the power of these applications!
Hi, I’m the creator of Fenêtre !
Really appreciate the reference mate, that’s awesome.
I’m chiming in just to say that I’m working on the cross plateform of the app.
Currently just Windows, but if there’s interest for Linux as well, it might be cool to do too.
Anyway, great listing !
That looks useful actually. I’ve always missed the basic things like always-on-top on the Mac.
+1 Linux <3
Hi. Yes, Would love to have something like Fenetre for Linux!
+1 for Linux <3
I use Windows for the video side of things, Linux for JS dev, but after looking into Fenêtre and the video editor Bruno mentioned (Kdenlive) I can honestly say I am just as eager for Fenêtre on Linux!
So, for what it is worth, +1 for Linux Fenêtre!
Another +1 for Linux 🙂
+1 for the Linux version
HI, you can use this:
as a Fenetre alternative. If you have Mint with Gnome 🙂
Also try Albert as a Alfred alternative. And THX for useful stuff
Hi. Didn’t know about that Extension. Thanks.
Yes, I have seen Albert before. Its not there arent tools like Alfred in Linux world. The issue is the lack of extensions, at least compared with Alfred which has an huuuge amount of workflows for literally everything.
This also looks cool .
The how2 link is broken. 🙁 I was really interested.
Try this: github.com/gleitz/howdoi
Like the first link in DuckDuckGo: github.com/santinic/how2
Thanks. The more important task was to make the author aware 😉
Nice, I made a setup last week for with a simpler setup still for web devs, but I wrote almost all the commands in a gist for further use (docker, bash-it, basic tools and CLIs)
Awesome list 😀
Boostnote seems to be the tools I’m looking for to replace CherryTree so Thank you.
NOTE: Mycli exists as Pgcli for Postgresql
ADD: github.com/nicolargo/glances for one-system monitoring
ADD: github.com/audreyr/cookiecutter an Yeoman alternative
Great article. Had one question though. I am an avid user of docker compose in both my dev and production environments. I want to move to Kubernetes (to take advantage of Container Engine, and autoscaling, etc). How do you find developing using eg. Mini Kube vs docker compose? And can you recommend and resources for learning?
Hello. I am in a similar situation than you. I still use Docker Compose for development and for now I found it simpler to use. I am using Minikube more of a platform to experiment and to learn Kubernetes.
But I plan to dig deeper in Minikube soon.
That’s an interesting list! I see we use some of the same software, like mycli.
I wrote as well an article which explains my setup (relatively minimal, terminal oriented) if somebody is interested:
Thanks for the list, I will look at it more in details see if I can enrich my set of tools!
You definitively should try rambox.pro/ in order to reduce the amount of dedicated chat apps 🙂
I use Rambox. I just wish it didn’t bog down my computer when I have many things open.
I ran into the same problem using Rambox – I found Franz which does the same thing and works a little more efficiently.
I had some issues with Franz and then I found Rambox and switched.
So the circle closes 😀
OMG, a lot of cool apps you use, gonna test some of them, but I got one question. How long to setup a environment like this in a new computer? there are too many tools, can you remember the commands to use all that?
Great question! Right now I have just a list of all the software I have installed so I would need to install everything by hand on a new machine which would take many time. I am working in a way to automate all this using Ansible. Something like this: blog.josephkahn.io/articles/ansible/
About the commands, tldr and pet can help a lot with that.
Shell autocompletion is also very useful. Many of the commands have ways to enable autocomplete for bash or zsh shells. Make sure you enable it.
I dont use all these tools on a daily basic tough, so many times I still need to read the documentation. I need to improve at this 😉
You could have a Github Gist or something with your personal cheat sheet where you can quickly reference.
One piece of advice, build your own cheat sheet and not rely on some random cheat sheet you found online. That way you can identify which commands you use more and build a cheat sheet according to your needs.
Really nice article!
For me I’ll add to the list:
Yes I have used Terminator before, but I have replaced it with Tilix. It has the some functionalities like split panes, but with a more modern look.
Didn’t know about Redshift. Will check. Thanks!
Really nice :thumbsup:
Annoyingly/wonderfully, there’s another ‘ctop’ that has other cool things like ‘entering’ the container (getting a shell prompt) and tree view.
Great list, thank you for sharing! I would just add Guake, a popup terminal I can’t live without anymore.
Guake is nice, but Tilix also allows you to eanble a “Guake mode” 😉
Yakuake is like Quake, but allows plane splitting.
Asciinema looks good, I’ll try it out.
Can you make a shell script to set all of this up? Would be damn helpful. Nice article!
how2 has a placeholder instead of a link
Some colleague who uses Mac and make a post like this.
Awesome! Thank you very much for sharing!
A gold article for today ❤
mycli is so awesome!
i like your must Thanks,
Pak Public News
Thanks man. its very helpful commands.
thanks for sharing I will try some of these tools
Add Ulauncher application launcher for linux
Hello. I have created a GitHub repository with my setup.
I will try to keep it updated as I discover new tools.
Great amount of new stuff to take a look 🙂 Thanks for sharing!
Noticed your link for how2 was broke 😀
Linux Ubuntu 18.04 is the best in looks with Gnome and live patching
Love this post, great job.
What technologies do you work with the most?
I am a Web Developer, mostly working with PHP, Java and Go in my daily work.
I am also interested in NodeJS, VueJS and DevOps stuff like Kubernetes.
Dope! Very useful 👌🏾
Love these kind of article
Thanks a lot 🙂
I can’t install boostnote for my Ubuntu 17.10 Gnome :/ But I used it at my work place.
Thats a pity. may be you should open an issue on Boostnote Github repo. I plan to switch to Ubuntu 18.04 so Boostnote has to work fine 🙂
Really nice list. I discovered some cool apps I haven’t seen before!
This is useful af!
- For U Me
- Expert Users
- Open Journies
- IT Admins
- Success Stories
- Thought Leaders
- Thought Leaders
- Open Biz
- Open Strategy
- Open Journies
- Success Stories
- Thought Leaders
- Electronics and Open Source
- Submit Tips
- Subscribe to Print Edition
- Write For Us
- Contact Us
Open Source For You
DevelopersTop 10 Open Source Tools for Web Developers
Every Web developer needs to be armed with a set of tools that aid and assist in building better and more complex websites. From the wide range of Web development tools available, we present a set of 10 that in the author’s opinion are a must for any Web development tool kit.
At a time when websites are getting more complex, we need more sophisticated and advanced Web development tools. There are plenty of tools available and new ones are constantly being introduced. It’s up to you to choose the best options to meet your requirements.
This article lists 10 open source Web development tools that I feel every Web developer should be aware of.
GitHub repository: https://github.com/nodejs/node
GitHub repository: https://github.com/twbs/bootstrap
GitHub repository: https://github.com/angular/angular.js
GitHub repository: https://github.com/adobe/brackets
Bower is an open source package manager for Web applications. We need to install a lot of packages while building a website, which Bower helps in automatically fetching and installing. The main objective of Bower is not to minimise code, but to install the right version of the packages and their dependencies required for a project.
GitHub repository: https://github.com/bower/bower
GitHub repository: https://github.com/gulpjs/gulp
MongoDB is a free and open source database written in C++. It is a document-oriented database that stores documents in a collection. It is one of the leading NoSQL databases and uses JSON-like documents. It is an open format, schema less database, ideal for object-oriented programming. MongoDB was designed by a company called 10gen in 2007.
GitHub repository: https://github.com/mongodb/mongo
8. Syntactically Awesome Style Sheets (Sass)
Sass is a CSS pre-processor that helps in writing reusable, extensible and maintainable code. Sass contains features that include variables, mixins, and nesting of selectors, functions and expressions. Using Sass, we can make large and complex style sheets easier to understand and maintain. It is an open source style sheet language designed by Hampton Catlin.
GitHub repository: https://github.com/sass/sass
GitLab is an open source, Web based Git repository manager. It provides features like code reviews, access controls, issue tracking, activity feeds and wikis. GitLab has continuous integration and deployment built in, to help you test, build and deploy code. GitLab was originally developed by GitLab Inc. It was written by Dmitry Zaporozhets and Valery Sizov.
GitHub repository: https://github.com/facebook/react
RELATED ARTICLES MORE FROM AUTHOR
Wipro Partners with Alfresco for Open Source Digital Transformation Program
H2O: The Versatile Tool for Deep Learning
Top 5 Open-Source Programming Languages
[…] Co daje GitLab – https://docs.gitlab.com/ce/user/markdown.html#lists – opis języka markdown. W przeglądarce Chrome jest wtyczka – https://redirect.viglink.com/ – StackEdit. 10 zasobów darmowych aplikacji – http://opensourceforu.com/2017/03/top-10-open-source-tools-web-developers/ : […]Reply
You have shared top open source web development tools which are necessary for web developers. Here I like to add few essential open source tools for web designers:
– VISUAL STUDIO CODE:
– PENCIL PROJECT
LEAVE A REPLY Cancel reply
Microsoft’s relationship with red hat will not affect SUSE
“We’ll continue to engage with and empower the developer community”
We are transforming the classroom culture in many ways
“DigitalOcean is built on a foundation of open source”
“Open source allowed me to swim freely and shape my journey”
In spite of not being a developer or having any technical background, his emails used to be answered by renowned computer scientists and founders…
“It wasn’t love at first sight with FOSS, but the idea…
“We always believed that open source is here to stay”
A Beginner’s Guide to Grep: Basics and Regular Expressions
A Guide to Using Raw Sockets
Getting Started with Hadoop on Windows
A Beginner’s Guide to Grep: Basics and Regular Expressions
The Best Open Source Machine Learning Frameworks
Function Pointers and Callbacks in C — An Odyssey
- For U & Me701
- Expert Users259
- Tools / Apps216
Open Source For You is Asia’s leading IT publication focused on open source technologies. Launched in February 2003 (as Linux For You), the magazine aims to help techies avail the benefits of open source software and solutions. Techies that connect with the magazine include software developers, IT managers, CIOs, hackers, etc. A free DVD, which contains the latest open source software and Linux distributions/OS, accompanies each issue of Open Source For You. The magazine is also associated with different events and online webinars on open source and related technologies.
Running Linux on Windows Using VirtualBox
DevOps Series Hardening of Parabola
Top 7 Linux Open Source Development Tools
– select the contributor at the end of the page –
In that regard, I’d say that my transition to developing under the Linux platform involved a bit of a learning curve. There have been endless debates about the merits of each tool, but at their most basic levels, they perform much of the same functions.
Things like search & replace functions, syntax highlighting, and support for multiple programming languages are standard features.
In this article, we’ll review Linux’s top open source editors.
We’ll cover some with basic functionality and those that are full fledged integrated development environments (IDE).
Ready to try your hand at developing under Linux?
I decided to include Gedit in this list because even though it doesn’t have all the bells and whistles of other tools, in terms of simplicity, it can’t be beat. Gedit is the official Gnome desktop editor, and is part of the default installation for any Gnome based flavors of Linux.
It supports development in many languages, with syntax highlighting. An extensive collection of plugins allows you to further expand the functionality.
This is the tool that I use for quick editing or changing of files. One of the things that keeps me from using it more is the inability to mount remote network drives.
Ever heard of defacto Unix text editor Vi? Vim is touted as an improved version, more feature-rich, Vi. Known as the “the programmer’s editor,” it’s obviously great for coding, but you can also edit things like config files and xml documents.
Vim is difficult to learn, and my own attempts have admittedly stalled. But proponents suggest that once you master it, the time it takes to learn will be worth it.
Vim comes standard with most every Linux distribution, but can be installed in Ubuntu with the command: sudo apt-get install vim full
Launch in console mode by typing vim in a terminal window (or gvim for graphical mode). The first thing you’ll need to learn about is the concept of modes.
- Insert (to type text)
- Command (to issue commands)
- Ex (to issue colon commands)
- Visual (to select text visually)
Tutorials and full documentation are available at the Vim website .
Free, relatively lightweight, low learning curve and a full IDE. This is just a slice of what Netbeans has to offer. I tried and liked Netbeans, and it is one of the tools that I turn to for my own needs. Netbeans is cross platform, so will run under Windows and Mac OS X as well as Linux.
There is support for Java and a slew of other languages and developers hosting their open-source projects on kenai.com have access to integrated instant messaging and issue tracking. Netbeans has fairly extensive collection of p lugins in addition to documentation and support at their website.
To install Netbeans, download from their website. The package is also available under the synaptic package manager in Ubuntu Linux, though it will not be the latest release.
Bluefish is my primary editor. It’s lightweight, has support for remote file editing and is both powerful and streamlined enough to support the majority of my web development needs. Like the other editors, Bluefish supports editing multiple file types and loads in an instant. One important thing to note about Bluefish, is that it is supposed to use 30 to 45% less memory than other editors.
The winners for me were the project features, which allows you to open multiple files and keep them organized, and also remote editing. Download files and installation instructions will guide you through the setup.
Geany isn’t a text editor but an extremely lightweight IDE. Geany is an open source software that will run on any flavor of Linux, either under KDE or Gnome desktops (as long as you have the GTK2 runtime libraries). Included are a source code editor and compiler for those more interested in application development.
Geany is suited to multiple type of development and also includes basic project management. Download a copy here . Fellow Ubuntu users can install with: sudo apt-get install geany.
Aptana was one of my early picks for a development tool. At the time, it was difficult to install in Ubuntu and had its fair share of quirks. Ultimately, I decided it was more than I needed at the time. But the latest release may have me taking another look.
Some have lamented certain instability with some Linux distributions. Download a copy here and a large community will be able to assist you with support . Java is also required.
7. Quanta Plus
Quanta Plus is a full web development environment and runs on the KDE desktop. As I run Gnome, I haven’t had the opportunity to test this tool like some of the others.
Quanta gives you true WYSIWYG development. Those familiar with Dreamweaver will be happy to see the split view (virtual preview layout), where you can view code and then the actual page in separate windows. One of its only documented issues is the lack of SVN support for version control.
This package may be already included with the KDE desktop and you may also download or install via synaptic package manager in Ubuntu. Documentation Wiki here.
The list of editors we’ve covered is by no means exhaustive. Other contenders you may want to review include Kompozer , Eclipse , and jEdit.
Final Thoughts on Editors
Each of these tools has its advantages and disadvantages. While I’ll refrain from engaging in a debate about which is best, I will point out that variety is one of the benefits of developing under the Linux platform. To stay abreast of latest web design trends and tricks, visit Smashing Magazine .
I hope with this introduction, you have identified some tools that you’d like to try. All that’s left now is to load a few, put them through some testing and decide what works best for you. If there is another tool that wasn’t mentioned here. Feel free to chime in with a comment touting our favorite editor.
Ready to test your skills in Linux? See how they stack up with this assessment from Smarterer . Start this Linux test now
Get our content first. In your inbox.
is a writer, web developer and tech guru. Her 20 year IT career came to an end when her inner writer and entrepreneur inexplicably besieged her to give it all up. She is a self-proclaimed girl-geek and linux convert, who has held MCSE, GSEC and PMP certifications. In her dreams, she is a international best-selling sci-fi and fantasy author, but in the meantime, she now spends her days writing, managing her websites and wrecking havoc on her Ubuntu laptop.