Giter VIP home page Giter VIP logo

you-dont-need-gui's Introduction

English | 简体中文

You Don't Need

Logo

People choose popular projects, often not because it applies to their problems.

Awesome

Contents

Packages

JavaScript Packages

Languages

Programming Practices

  • You Don't Need Loops ➿ - Loops are bullshit. Let's embrace wholemeal programming!
  • You Probably Don't Need Derived State (React) - As a general rule, derived state should be used sparingly. All problems with derived state that we have seen can be ultimately reduced to either unconditionally updating state from props or updating state whenever props and state don't match.
  • You Might Not Need to Transpile Your JavaScript - In other words if you're transpiling your JavaScript to ES5, you're making your code unnecessarily big and slow to support a minority of the users who will probably upgrade their system by the time you manage to configure your Webpack and Babel! 😉

Miscellaneous

you-dont-need-gui's People

Contributors

altbdoor avatar ashleyharvey avatar berkmann18 avatar cht8687 avatar crazypython avatar dennisxzx avatar gutierri avatar h3xx avatar haroenv avatar hezhizhen avatar iamtalas avatar jakebrinkmann avatar koppor avatar lorenzck avatar majewsky avatar masonm avatar maujfernandezuvr avatar mischah avatar mortal avatar nosir avatar rjc avatar rohitrajak1807 avatar seasonedfish avatar sicaboy avatar stevemao avatar teddyhuang-00 avatar tomsaleeba avatar umr55766 avatar yfgeek avatar zwindl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

you-dont-need-gui's Issues

Should we use less directly, instead of being piped from cat?

In reference to the section "view content of a file", the recommendation to view a larger file is:

# if the file is too big to fit on one page, you can send it to a 'pager' (less) which shows you one page at a time.
$ cat apps/settings.py | less

Wouldn't less apps/settings.py be sufficient?

Jump Back to TOC

I exploring the list I found it annoying to click a link in the table of contents, examine, then (vimium gg) jump to the very top and scroll and locate the place in the TOC I left off.

Simple solution: Include links to TOC entry next to item in body

Moving a file

Please, when moving a file to a directory always use a trailing slash at the end of the folder to avoid mistakes:

mv readme.txt documents/

For this reason

Shorter command: Windows open file with default program

start isn't required, if you have blah.txt or movie.mp4 or whatever, just typing

movie.mp4

Will open in default. Start is only rarely needed.
If the file isn't associated with anything, it'll show the "open with..." dialog which is easier than assoc and ftype for most people.
If you're the kind of crazy that thinks they can do a better job dishing out process priorities than the OS can schedule them, go ahead and start firefox with realtime priority and watch the fail. This used to be needed sometimes (back when we had one core) but these days it just interferes with the scheduler.
If you're running a Threadripper or Epyc with L3_SRAT_AS_NUMA enabled or NPS > 1 and want to make sure some long-running hardware intensive process gets thrown onto the same node the hardware. Usually the OS will do this when it starts performing heavy access; you could also set the affinity to the CCD's cores that correspond to where that node would be if NUMA nodes are off

assoc and ftype can set new ones from the command prompt since you won't get the usual "open with" window

An idea/partnership suggestion

Note: Let it be out in the open, self-promotion is a byproduct of this suggestion.

Hi, I have undertaken a holy quest to convince people to use the CLI/Linux/FOSS. In service to that quest, I have created tuterm. It's a bash program that allows you to write a transcript of commands. When you run tuterm, those commands are automatically reproduced as if a human were typing them. The user is then expected to repeat the commands.

I would love to cooperate with this repo in turning the README into a tuterm tutorial. We could also create an asciicast tutorial an put it as a gif inside the README itself, which would make it more attractive.

Using tuterm has the following benefits:

  • 100% repeatable
  • The users don't have to set up an environment/directory for testing the commands themselves (this is something that irritated me when I was a beginner)
  • User input is error-checked before running so there is no room for mistakes

The project (tuterm) is still young, so there may be bugs.

Looking forward to your reply!

“Create a new file” suggests two totally different commands

There are two alternative commands suggested:

touch 'new file'
# or
> 'new file'

While both commands are OK for creating files, the ultimate meaning of them is different: e. g. if the file already exists, the former would just update the access timestamp on it, while the later will also remove its contents. It is probably worth noting, especially since this guide is aimed at the beginners.

o i am laffin

STOP DOUBLE CLICKING ON A FILE
$ xdg-open file

STOP OPENING YOUR FINDER OR FILE EXPLORER
$ find . -print | sed -e 's;[^/]*/;|;g;s;|; |;g'

lol k i'll race you

can't `stat -x`

$ stat -x README.md
stat: invalid option -- 'x'
Try 'stat --help' for more information.
$ stat --version
stat (GNU coreutils) 8.25

Arch Linux

that's why people complains that linux sucks

I know that some commands are useful and faster than GUI, but why the need of an terminal and a long command just for copy/paste an file? No wonder why Linux still has a low market share as a desktop OS

Some examples are GNU-specific

Case in point - #quick-tips:

$ !!
$ sudo !!
$ !<word>
$ !<word>:p

are all specific to GNU Bash and won't work on, let's say OpenBSD's ksh(1), etc. so please mark them as such.

While we're at it, if we're at "You don't need GUI", probably best to get rid of that image and replace it with plain text, eh? ;^)

Also, these examples are GNU Coreutils-specific:

$ date -d "+7 days
$ date -j -v+7d

How about sticking to POSIX-only?

Most recommendations differ from what the GUI would do.

Most command examples currently shown do the operation way worse than what I'd expect thunar would do (and afair, does). Here's an attempt at fixing the most obvious differences.

-cp readme.txt documents
+cp --verbose --no-clobber --no-dereference --target-directory='documents' -- 'readme.txt'

stop right click and duplicate file

A core feature of the duplicate command is to automatically suggest an unused target file name, and prepare it in a way that helps users resume their work when they get distracted while deciding about the target file name. In that case they usually end up having a duplicate with the original name and a number, with content as it was at the moment they began their operation.

-cp readme.txt readme.bak.txt
+cp --verbose --no-clobber --no-dereference --no-target-directory -- readme{,.bak}.txt

copy a folder

-cp -R myMusic myMedia
+cp --verbose --interactive --recursive --one-file-system --target-directory='myMedia' -- 'myMusic'

duplicate a folder

-cp -R myMusic myMedia
+cp --verbose --interactive --recursive --one-file-system --no-target-directory -- 'myMusic' 'myMedia'
-mv readme.txt documents
+mv --verbose --interactive --target-directory='documents' -- 'readme.txt'

-mv readme.txt README.md
+mv --verbose --interactive --no-target-directory -- 'readme.txt' 'README.md'

-mv myMedia myMusic
+mv --verbose --interactive --target-directory='myMusic' -- 'myMedia'
-touch 'new file'
+magicmenu select-file-from /usr/share/file_templates/ --as %t \
+  --exec magicprompt suggest-filename --find-unused-suffix --basename %t --as %f \
+  --exec cp --dereference --no-clobber --no-target-directory -- %t %f

The mkdir examples are good, they even have quotes! 👍

-stat -x readme.md
+# Ubuntu says: stat: invalid option -- 'x'
+du --bytes 'readme.md' && du --human-readable -- 'readme.md'

The {,xdg-}open examples are good. Missing quotes shouldn't usually be too much of a problem here.

For the zip example, consider -y and quotes.

-rm my_useless_file
+rm -I --verbose -- 'my_useless_file'

-rm -r my_useless_folder
+rm -I --verbose --one-file-system --recursive -- 'my_useless_file'

You may wonder why I insist on quotes? You can easily clobber data without them. Forgetting the quotes usually causes the loudest anger when it happens with rm. (Example: bumblebee. the accident, the fix)

The ls example is okay, although it requires some good shell aliases to have similar selection of folder views and select them with similar ease. For thumbnail view on a pictures folder in a graphics-enabled command line shell, the discussion about the boundaries of "GUI" are left for another thread.

Misleading title

"You don't need GUI" just sounds too loud. You've pretty much described the basic *nix commands which are used by the majority of people anyway. Go hardcore, push for Vim and Emacs as the editors, ncmpcpp as the music player, tmux as the way to get some viewport layout...

Well, what about tiling WMs like i3 or AwesomeWM?

Two items to add to the list

(1) Add $(!!), recomputes last command

Comes in handy for things like these:

$ which python
/usr/bin/python
$ ls -l $(!!)
ls -l $(which python)
lrwxrwxrwx 1 root root 7 Apr 15  2020 /usr/bin/python -> python2

(2) Or find filename on whole file system, suppressing 'Permission denied' errors:

find / -name filename 2>&1 | grep -v 'Permission denied'

rm for deleting?

We can use rm for permanent delete, for the noobs it might give an idea that it goes in to recycle bin, some clarification might be needed there.

Missing some major concepts of GUIs

Most GUIs (at least from big vendors) are built with some basic concepts of user happiness in mind:

  • warn about potential accidents. (--interactive)
  • confirm success. (--verbose)
  • documentation optimized for inattentive readers. (man pages: conciseness)

More detailed explanation can be found in Joel's article "Biculturalism".

make a cli for 'you-dont-need-gui'

hey, you could make a CLI for this. literally it could just echo the readme to stdout, so folks could grep it :P

thanks for making it!

Use directory instead of folder

These instructions are for *NIX systems, and as such they should refer to directories instead of folders (which is a Windows term).

Add shell indicator

Some do work in the git bash on windows. Maybe its nice to have an indicator for that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.