New around here? Register your SA Forums Account here!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

MALE SHOEGAZE posted:

i actually think windows 8 / 10 are the best looking desktop os, it's just that they suck to use.

but my ipad pro is the first OS that's genuinely pleasurable to use.

i have to use linux as my daily driver and at this point the constant weird driver issues are more annoying than the usability of the myriad DE's. i'm seriously considering giving the windows linux thing a try, maybe it would be better than linux / gnome ? i dont think a serious computer user has ever tried using windows as a serious development environment, so i dont think anyone really knows.

i hate my life and myself

we use windows as a serious dev environment, but we're an extreme outlier because even though the best versions of cache run on linux, the best dev tools for it are windows. the dev environment on linux is a barebones cli editor that only works with vt-400 keymapping.

Adbot
ADBOT LOVES YOU

Shaggar
Apr 26, 2006
Windows is the best dev environment.

Soricidus
Oct 20, 2010
freedom-hating statist shill

MALE SHOEGAZE posted:

i actually think windows 8 / 10 are the best looking desktop os,

lol

mike12345
Jul 14, 2008

"Whether the Earth was created in 7 days, or 7 actual eras, I'm not sure we'll ever be able to answer that. It's one of the great mysteries."





I liked Mac OS 9 Classic. It was grey, didn't bombard you with lollipop icons and rainbow colors, and let you do your job*.

* ok it was usually a windows 98 level POS when I worked with it. but still, the design.

hobbesmaster
Jan 28, 2008

Progressive JPEG posted:

anything qt just subjectively doesn't look good to me

qt applications by default match the local desktop environment

as this thread is about linux, yes of course it didn't look good

Sapozhnik
Jan 2, 2005

Nap Ghost

mike12345 posted:

I liked Mac OS 9 Classic. It was grey, didn't bombard you with lollipop icons and rainbow colors, and let you do your job*.

* ok it was usually a windows 98 level POS when I worked with it. but still, the design.

BeOS was basically this school of design except better. I really hope that aesthetic makes a comeback some day.

Sagebrush
Feb 26, 2012


professor lumpy balls, they call me

mike12345 posted:

I liked Mac OS 9 Classic. It was grey, didn't bombard you with lollipop icons and rainbow colors, and let you do your job*.

* ok it was usually a windows 98 level POS when I worked with it. but still, the design.

Platinum was a great aesthetic, agreed

Soricidus
Oct 20, 2010
freedom-hating statist shill
every time i look at windwos 10 and its endless flat indistinguishable white and pale gray rectangles i wonder what the gently caress happened to all the good looking ui designs we uysed to have

like it's got to hte point now where i can't even see the where the scroll bar is scrolled to because there's so little contrast between the flat gray rectangle and the slightly darker flat gray rectangle on top of it

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 9 years!)

Sagebrush posted:

Platinum was a great aesthetic, agreed

good poo poo op

atomicthumbs
Dec 26, 2010


We're in the business of extending man's senses.

Soricidus posted:

every time i look at windwos 10 and its endless flat indistinguishable white and pale gray rectangles i wonder what the gently caress happened to all the good looking ui designs we uysed to have

like it's got to hte point now where i can't even see the where the scroll bar is scrolled to because there's so little contrast between the flat gray rectangle and the slightly darker flat gray rectangle on top of it

The same thing that happened to good-looking cars.

b0red
Apr 3, 2013

~*~minimalism~*~

the more you add the better the ui

BobHoward
Feb 13, 2012

The only thing white people deserve is a bullet to their empty skull
counterpoint



(also look at it carefully fuckos its not quite what it appears to be)

atomicthumbs
Dec 26, 2010


We're in the business of extending man's senses.

BobHoward posted:

(also look at it carefully fuckos its not quite what it appears to be)

:allbuttons:

BobHoward
Feb 13, 2012

The only thing white people deserve is a bullet to their empty skull
can't find a better (bigger) example of this one but it kinda owns, was the best of the copland theming engine stuff imo

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

carry on then posted:

good poo poo op



beveled ui elements are extremely my poo poo

atomicthumbs
Dec 26, 2010


We're in the business of extending man's senses.

Wheany posted:

beveled ui elements are extremely my poo poo

or ui elements with borders

basically anything that lets your brain quickly tell where they begin and end



we need to go back to black and white and grey

instead of

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope
amigaos :swoon:

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder

atomicthumbs posted:

or ui elements with borders

basically anything that lets your brain quickly tell where they begin and end



we need to go back to black and white and grey

instead of



last one looks the best, yall are blind. flat ui supremacy

Cybernetic Vermin
Apr 18, 2005

at the very least that is a horrible example of what you are trying to communicate

the all-white window borders in 10 are pretty dubious though, harder than it needs to be to tell where things start and end

suck my woke dick
Oct 10, 2012

:siren:I CANNOT EJACULATE WITHOUT SEEING NATIVE AMERICANS BRUTALISED!:siren:

Put this cum-loving slave on ignore immediately!

MALE SHOEGAZE posted:

flat ui inferiority

more like

Blue Train posted:

at least most of the problems can be fixed through extensions, overall gnome is p good

actually that's still p bad, since only turbospergs will ever get around to installing extensions leaving 99% of users with a piss garbage ui

atomicthumbs
Dec 26, 2010


We're in the business of extending man's senses.

MALE SHOEGAZE posted:

last one looks the best, yall are blind. flat ui supremacy

gently caress Off, Nerd

Captain Foo
May 11, 2004

we vibin'
we slidin'
we breathin'
we dyin'

BobHoward posted:

counterpoint



(also look at it carefully fuckos its not quite what it appears to be)


BobHoward
Feb 13, 2012

The only thing white people deserve is a bullet to their empty skull
im glad that was the image i found of that theme

CPColin
Sep 9, 2003

Big ol' smile.
It reminds me of the days when NESticle added a sprite editor and everybody made Babby's First Romhack.

mike12345
Jul 14, 2008

"Whether the Earth was created in 7 days, or 7 actual eras, I'm not sure we'll ever be able to answer that. It's one of the great mysteries."





https://twitter.com/sarahjeong/status/730429298608209921

from the currently ongoing google-oracle trial

RISCy Business
Jun 17, 2015

bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork bork
Fun Shoe

mike12345 posted:

https://twitter.com/sarahjeong/status/730429298608209921

from the currently ongoing google-oracle trial

what's a recursive acronym lol

BobHoward
Feb 13, 2012

The only thing white people deserve is a bullet to their empty skull
the best jokey recursive unix-clone acronym is xinu, which i am astonished to learn still exists as a thing

Soricidus
Oct 20, 2010
freedom-hating statist shill
I finally gave up and bought a preconfigured linux desktop from the apple store. it's pretty decent and I love how easy it was to set up my printer etc, but the default window manager is really bad and it sucks that it ships with hilariously outdated versions of basic unix utilities that you can't upgrade unless you install a third party package manager

overall 7/10, would use over ubuntu any day

Notorious b.s.d.
Jan 25, 2003

by Reene
friends don't let friends use ubuntu

There Will Be Penalty
May 18, 2002

Makes a great pet!

Notorious b.s.d. posted:

friends don't let friends use computers

Loving Africa Chaps
Dec 3, 2007


We had not left it yet, but when I would wake in the night, I would lie, listening, homesick for it already.

Soricidus posted:

I finally gave up and bought a preconfigured linux desktop from the apple store. it's pretty decent and I love how easy it was to set up my printer etc, but the default window manager is really bad and it sucks that it ships with hilariously outdated versions of basic unix utilities that you can't upgrade unless you install a third party package manager

overall 7/10, would use over ubuntu any day

That's a BSD you retard

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

Loving Africa Chaps posted:

That's a BSD you retard

i think you'll find that bsd is a linux

suck my woke dick
Oct 10, 2012

:siren:I CANNOT EJACULATE WITHOUT SEEING NATIVE AMERICANS BRUTALISED!:siren:

Put this cum-loving slave on ignore immediately!

Notorious b.s.d. posted:

friends don't let friends use ubuntu

but what about kubuntu

Progressive JPEG
Feb 19, 2003

blowfish posted:

but what about kubuntu
        /

atomicthumbs
Dec 26, 2010


We're in the business of extending man's senses.

Loving Africa Chaps posted:

That's a BSD you retard

Please do not be ableist in this, the linux thread.

suck my woke dick
Oct 10, 2012

:siren:I CANNOT EJACULATE WITHOUT SEEING NATIVE AMERICANS BRUTALISED!:siren:

Put this cum-loving slave on ignore immediately!

atomicthumbs posted:

Please do not be ableist in this, the linux thread.

:eyepop:

Notorious b.s.d.
Jan 25, 2003

by Reene
i am happy to live in an era when dell will sell you a laptop with linux preinstalled, but it makes me sad that the only option is ubuntu

you bastards

Amethyst
Mar 28, 2004
[color=pink]BUCKY DEFENDER[/color]
hot drat CJs. I cannot WAIT to get a real bash shell on the trusty ol' beige windows box. I've been reading through a great article on all the neat things you can do, I've copied it below. Get hype guys!

If you're wondering why I'm wearing dark sunglasses, a fake moustache, and a baseball cap (featuring the logo of professional curling team, The Floating Stones), I'm on the lam. I'm dodging black remote-controlled helicopters, pasty-white systems administrators, and the combined forces of many daemons to bring you some of the best-kept secrets of UNIX® power users. Don your aluminum foil hat and read on.
Save the environment variables
Most UNIX users amass settings in shell startup files, such as .bashrc (for the Bash shell) and .zshrc (for the Z shell), to recreate a preferred shell environment time and again. Startup files can create aliases, set shell options, create functions, and set environment variables. Essential environment variables include HOME (which points to your home directory), PATH (which enumerates directories in which to search for applications), and MANPATH (which lists directories in which to search for man pages). To see which environment variables are set in your shell, type printenv. Consult your shell's man page for a complete list of available environment variables.
Like the shell, you can customize many other UNIX applications through environment variables. For example, the Java™ subsystem requires that you define JAVA_HOME to point to the root of a Java run time. Similarly, the suite of Amazon Web Services (AWS) utilities mandates the use of AWS_CREDENTIAL_FILE to point to a file with valid private key credentials. Individual applications provide environment variables, too. The trick is discovering the variables. Luckily, the work need not involve breaking and entering; instead, simply consult the man page of the utility at hand and look for a separate section titled, "Environment Variables."
For example, the pager utility less defines a number of useful environment variables:
The environment variable LESS stores command-line options, reducing what you type each time you invoke the pager. For instance, if you read a good number of log files, put the following in a shell startup file:
export LESS='--RAW-CONTROL-CHARACTERS --squeeze-lines --ignore-case'
The options interpret control characters (usually syntax coloring), reduce runs of blank lines to a single line, and ignore case in string matches, respectively. If you work with code, try these options:
export LESS='--LINE-NUMBERS --quit-if-one-screen --quit-on-intr'
The environment setting named LESSKEY points to a file of key bindings. You can use key bindings to customize the behavior of less, say, to match the behavior of another pager or editor.
Like the shell, less can maintain history between invocations. Set LESSHISTFILE and LESSHISTSIZE to point to a file of persist commands and to set the maximum number of commands to record, respectively.
Another good application of environment variable can be found in the GNU Compiler Collection (GCC). GCC defines a variety of environment variables to customize its operation. LIBRARY_PATH, as its name implies, is a list of directories to search for libraries to link to; COMPILER_PATH works much like the shell's PATH but is used internally by GCC to find subprograms used during the compilation process.
If you write code and build binaries for a single platform, you may never use these environment variables, However, if you cross-compile the same code for a number of platforms, such variables are essential for accessing the varied headers and libraries for each platform. You might set variables to one collection of values for one kind of machine and set the values to another collection for a system of an alternate flavor.
In fact, you can take a cue from GCC: Maintain many sets of environment variables per application and switch from one pool to another depending on the work at-hand. One approach is to keep an environment initialization file in each project directory and source it as needed. For instance, many Ruby developers use such a solution to switch between Ruby versions, changing environment variables PATH, GEM_HOME, and GEM_PATH as needed to hop from one version to another.
Back to top
Dotting the landscape
Much like environment variables, many Linux® and UNIX applications provide a dot file—a small file whose name begins with a period—for customizations. However, unlike environment variables that capture a handful of flags or a relatively tiny amount of information, a dot file can be much more extensive, even complex, with its own peculiar syntax rules and even its own programming language. A dot file is a convenient place to keep options and settings, because (per UNIX heritage) file names that begin with a dot do not appear in a standard directory listing. (Use ls -a to see these so-called hidden files.) Except for its special name, a dot file is a plain text file.
A dot file is usually found in your home directory, but some utilities look for a dot file in the present working directory, too. If an application supports more than one dot file, the program typically applies precedence rules to favor one file over another. In general, a "local" dot file—one found in the current working directory—has highest precedent, followed by one in your home directory and then by a system-wide configuration. None, one, or all of these files can exist, and it's up to the application to treat the files as mutually exclusive or incremental. In the former case, the first dot file found in the precedent chain is definitive. In the latter case, the configuration might cascade or be reconciled into a final result.
An example of a simple dot file is less's key bindings file, located in $HOME/.lesskey. Each line in the file is a pair (a keystroke and a command) resembling something like the snippet below:
\r forw-line
\n forw-line
e forw-line
j forw-line
^E forw-line
^N forw-line
k back-line
y back-line
^Y back-line
At the other extreme, consider fetchmail. The utility picks up e-mail from multiple remote sources and delivers the messages locally. The operation of the utility is controlled solely through $HOME/.fetchmailrc. (See the man page for its many options.) cron, git, vi, and many other commands recognize dot files, too. Again, read the man page for the application to learn what you configure in a dot file. Some dot files are rich enough to warrant a separate man page, such as crontab.
Back to top
Shhh . . . secrets about SSH
Secure Shell (SSH) is a rich subsystem used to log in to remote systems, copy files, and tunnel through firewalls—securely. Since SSH is a subsystem, it offers plenty of options to customize and streamline its operation. In fact, SSH provides an entire "dot directory", named $HOME/.ssh, to contain all its data. (Your .ssh directory must be mode 600 to preclude access by others. A mode other than 600 interferes with proper operation.) Specifically, the file $HOME/.ssh/config can define lots of shortcuts, including aliases for machine names, per-host access controls, and more.
Here is a typical block found in $HOME/.ssh/config to customize SSH for a specific host:
Host worker
HostName worker.example.com
IdentityFile ~/.ssh/id_rsa_worker
User joeuser
Each block in ~/.ssh/config configures one or more hosts. Separate individual blocks with a blank line. This block uses four options: Host, HostName, IdentityFile, and User. Host establishes a nickname for the machine specified by HostName. A nickname allows you to type ssh worker instead of ssh worker.example.com. Moreover, the IdentityFile and User options dictate how to log in to worker. The former option points to a private key to use with the host; the latter option provides the login ID. Thus, this block is the equivalent of the command:
ssh joeuser@worker.example.com -i ~/.ssh/id_rsa_worker
A powerful but little-known option is ControlMaster. If set, multiple SSH sessions to the same host share a single connection. Once the first connection is established, credentials are not required for subsequent connections, eliminating the drudgery of typing a password each and every time you connect to the same machine. ControlMaster is so handy, you'll likely want to enable it for every machine. That's accomplished easily enough with the host wildcard, *:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
As you might guess, a block tagged Host * applies to every host, even those not explicitly named in the config file. ControlMaster auto tries to reuse an existing connection but will create a new connection if a shared connection cannot be found. ControlPath points to a file to persist a control socket for sharing. %r is replaced by the remote login user name, %h is replaced by the target host name, and %p stands in for the port used for the connection. (You can also use %l; it is replaced with the local host name.) The specification above creates control sockets with file names akin to:
master-joeuser@worker.example.com:22
Each control socket is removed when all connections to the remote host are severed. If you want to know which machines you are connected to at any time, simply type ls ~/.ssh and look at the host name portion of the control socket (%h).
The SSH configuration file is so expansive, it too has its own man page. Type man ssh_config to see all possible options. And here's a clever SSH trick: You can tunnel from a local system to a remote one via SSH. The command line to use looks something like this:
$ ssh example.com -L 5000:localhost:3306
This command says, "Connect via example.com and establish a tunnel between port 5000 on the local machine and port 3306 [the MySQL server port] on the machine named 'localhost.'" Because localhost is interpreted on example.com as the tunnel is established, localhost is example.com. With the outbound tunnel—formally called a local forward—established, local clients can connect to port 5000 and talk to the MySQL server running on example.com.
This is the general form of tunneling:
$ ssh proxyhostlocalport:targethost:targetport
Here, proxyhost is a machine you can access via SSH and one that has a network connection (not via SSH) to targethost. localport is a non-privileged port (any unused port above 1024) on your local system, and targetport is the port of the service you want to connect to.
The previous command tunnels out from your machine to the outside world. You can also use SSH to tunnel in, or connect to your local system from the outside world. This is the general form of an inbound tunnel:
$ ssh user@proxyhost -R proxyport:targethosttargetport
When establishing an inbound tunnel—formally called a remote forward—the roles of proxyhost and targethost are reversed: The target is your local machine, and the proxy is the remote machine. user is your login on the proxy. This command provides a concrete example:
$ ssh joe@example.com -R 8080:localhost:80
The command reads, "Connect to example.com as joe, and connect the remote port 8080 to local port 80." This command gives users on example.com a tunnel to Joe's machine. A remote user can connect to 8080 to hit the Web server on Joe's machine.
In addition to -L and -R for local and remote forwards, respectively, SSH offers -D to create an HTTP proxy on a remote machine. See the SSH man page for the proper syntax.
Back to top
Rewriting with history
If you spend a lot of time at the shell prompt, recording shell history can save time and typing. But there are a few annoyances with history, if left unmodified: History records duplicate commands, and multiple shell instances can clobber each other's history. Both complications are easily overcome. Add two lines to your .bashrc:
export HISTCONTROL=ignoreboth
shopt -s histappend
The first line removes consecutive duplicate commands from your shell history. If you want to remove all duplicates independent of sequence, change ignoreboth to erasedups. The second line appends a shell's history to your history file when the shell exits. By default, the Bash history file is named (yes, a dot file) ~/~/.bash_history. You can change its location by setting (yes, an environment variable) HISTFILE. If you want to save a shell's most recent 10,000 commands in a history file with 100,000 entries, add export HISTSIZE=10000 HISTFILESIZE=100000 to your shell startup file. To see a shell's history, type history at any prompt.
Saving a history of commands is of little use if you cannot recall it. That's the purpose of the shell !, or bang, operator:
!! ("bang bang") repeats the last command in its entirety.
!:0 is the name of the previous command.
!^ is the first argument of the previous command. !:2, !:3, and so on, ending with !$ are the second, third, and eventually the last argument of the previous command.
!* is all the arguments of the last command, except the command name.
!n repeats the command numbered n in history.
!handle repeats the last command that begins with the string of characters in handle. For example, !ca would repeat the last command that began with the characters ca, such as cat README.
!?handle repeats the last command that contains the string of characters in handle. For example, !?READ would also match cat README.
^original^substitution replaces the first occurrence of original with substitution. For example, if the previous command was cat README, the command ^README^license.txt would yield a new command cat license.txt.
!:gs/original/substitution replaces all occurrences of original with substitution. (!:gs means "global substitution.")
!-2 is the penultimate command, !-3 is third most recent command, and so on.
You can even combine history expressions to yield sigil soup such as !-2:0 -R !^ !-3:2, which would expand to the command name of the penultimate command, followed by -R, the first argument of the previous command, and the second argument of the third most recent command. To make such cryptic commands more readable, you can expand history references as you type. Type the command bind Space:magic-space at any prompt, or add it to a startup file to bind the Space key to the function magic-space, which expands history substitutions inline.
Back to top
Expand-o-Matic
With so much code available on the Internet, you're likely to download dozens of files every day. And chances are, all those files are packaged differently—a ZIP file here, a RAR file there, and tarballs galore, albeit each one compressed with a different utility. Remembering how to decompress and expand each package format can be taxing. So, why not capture all those tasks in a single command? This function is widely available in many sample dot files:
ex () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
This function, ex, expands 11 file formats and can be extended if you deal with some other package type. Once defined—say, in a shell startup file—you can simply type ex somefile, where somefile ends with one of the named extensions:
$ ls
source
$ tar czf source.tgz source
$ ls -1
source
source.tgz
$ rm -rf source
$ ex source.tgz
$ ls -1
source
source.tgz
By the way, if you ever misplace something you downloaded today, run find to discover it:
$ find ~ -type f -mtime 0
The command -type f looks for plain files, and -mtime 0 looks for files created since midnight of the current day.
Back to top
Many more secrets
There are a lot more expert secrets to be discovered. Search the Web for "shell auto-complete" to learn more about automatic completion, a feature that provides context-sensitive expansions as you type a command. Also, search for "shell prompts" to learn how to customize your shell prompt. You can make it colorful; you can show your current working directory or Git branch; you can also show the history number—a convenient reference if you recall history a good deal. For working examples, search Github for "dot files." Many experts post their shell configurations on Github.
Now, if you'll excuse me, I have to find my wig and bronzer. It's not easy to hide when you resemble Groucho Marx.

Sagebrush
Feb 26, 2012


professor lumpy balls, they call me
something really broke anime dogtits' brain

Adbot
ADBOT LOVES YOU

Amethyst
Mar 28, 2004
[color=pink]BUCKY DEFENDER[/color]

Sagebrush posted:

something really broke anime dogtits' brain

Not sure what you're talking about. Just sharing interesting things I find on the web. Perhaps not everyone is excited for a linux environment in windows as I am but hey, to each their own.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply