Neofetch — информация о системе linux и логотип в терминале

DESCRIPTION top

       tee() duplicates up to len bytes of data from the pipe referred to by
       the file descriptor fd_in to the pipe referred to by the file
       descriptor fd_out.  It does not consume the data that is duplicated
       from fd_in; therefore, that data can be copied by a subsequent
       splice(2).

       flags is a bit mask that is composed by ORing together zero or more
       of the following values:

       SPLICE_F_MOVE      Currently has no effect for tee(); see splice(2).

       SPLICE_F_NONBLOCK  Do not block on I/O; see splice(2) for further
                          details.

       SPLICE_F_MORE      Currently has no effect for tee(), but may be
                          implemented in the future; see splice(2).

       SPLICE_F_GIFT      Unused for tee(); see vmsplice(2).

Use screenFetch to display Linux distro logo in ASCII art

screenFetch is another way to display Linux distribution logo in the terminal. You don’t have to specify anything, it will auto-detect the Linux distribution. And not just logo, screenFetch also displays some basic hardware information alongside it.

Install screenFetch

To install screenFetch in Ubuntu based distributions such as Linux Mint, elementary OS, Linux Lite, Zorin OS etc, you can use the command below:

Note: For Ubuntu-based distributions, you’ll have to add a PPA (as suggested by Benjamin in the comments). Use the command below:

To install screenFetch in Arch-based distributions such as Antergos, Manjaro, Chakra etc, use the command below:

To install screenFetch in Fedora-based Linux distributions such as Korora etc, use the command below:

Using screenFetch

Using screenFetch is utterly simple. Open a terminal and use the command below:

That’s it. You’ll see the logo of your Linux distribution displayed in ASCII art along with some information about your system:

Recommended Read:

Taking screenshot with screenFetch

Now, this is optional because you can use the Screenshot tools to take the screenshot of the displayed ASCII art in the terminal. But if you install command line screenshot utility, scrot (it is available in the default repository of several Linux distributions), you can automatically take a screenshot of the displayed Linux logo along with your desktop with the command below:

If I combine screenFetch with vintage looking cool-retro-term, the result is even more awesome:

Зачем вообще использовать командную строку

Когда хотят рассказать чем же хорош CLI, выделяют разные преимущества перед GUI:

  • Доступность. Командная строка доступна везде. Внутри Android Studio есть вкладка с командной строкой. Можно и вовсе настроить «drop-down» терминал (ещё его называют «quake style»), который будет появляться поверх всех приложений по нажатию сочетания клавиш.

  • Многофункциональность. Одна точка доступа к любым утилитам.

  • Простота. Простой командный интерфейс может заменить сложный графический интерфейс. Сделать графический интерфейс который позволит ввести, например, пять параметров может быть довольно нетривиальной задачей, а сделать то же самое с командным интерфейсом — просто.

  • Легковесность. Как правило, CLI утилиты используют меньше ресурсов.

Меня как разработчика больше всего впечатляет, как можно комбинировать CLI утилиты. Текст — интерфейс общения, который понятен для всех утилит с командным интерфейсом. Утилиты принимают на вход текст и возвращают тоже текст. Это один из принципов Unix, которые сформулировал Дуглас Макилрой в 1978 году:

Программы, которые соблюдают эти принципы, похожи на кирпичики. По отдельности они решают простую задачу, но их комбинации позволяют решать и сложные задачи.

Примеры из жизни

Я задал вопрос коллегам-роботам: «Для чего вы чаще всего открываете терминал?» Получился такой ТОП-5:

  1. Работа с Git там, где не хватает графического интерфейса Git-клиента.

  2. Установка пакетов и управление зависимостями (подробнее про менеджер пакетов поговорим в разделе «Устанавливаем менеджер пакетов»).

  3. Работа с SSH.

  4. Проверка API с помощью curl.

  5. Когда нужно «грохнуть» процесс.

Есть и менее очевидные применения:

  1. Скачать видео из YouTube поможет youtube-dl. Качаете подкаст и нужна только аудио-дорожка? Добавьте к команде флаг . Хотите скачать весь плейлист или даже весь канал? Подставляйте ссылку на канал и готовьте побольше свободного места.

  2. Хотите посмотреть отличия между файлами? Выполните команду и укажите пути до файлов, которые надо сравнить.

Удалить лишние локали

После установки (генерации) локали, она помещается в архив . Файл архива — это файл, отображаемый в память, который содержит все локали системы; он используется всеми локализованными программами. Посмотреть список локалей в архиве можно с помощью команды:

$ localedef --list-archive
en_US.utf8
ru_RU.utf8
ru_UA.utf8

Удалить заданную локаль из файла архива:

$ sudo localedef --delete-from-archive ru_UA.utf8

Обратите внимание на название локали — , а не. Если неправильно указать локаль — она не будет удалена из архива:

$ sudo localedef --delete-from-archive ru_UA.UTF-8
locale "ru_UA.UTF-8" not in archive

В случае, если утилита была вызвана с опцией , надо удалить соответствующую директорию в :

$ cd /usr/lib/locale
$ ls
C.UTF-8    en_US.utf8    ru_RU.utf8    ru_UA.utf8
$ sudo rm -r ru_UA.utf8

Возможности Neofetch

Интересной особенностью Neofetch является то, что можно настроить до мельчайших деталей. Либо через файл конфигурации, либо одновременно он выполняется. Вам просто нужно добавить необходимые параметры. Есть более 50 вариантов конфигурации играть с ним.

В файле конфигурации Neofetch мы найдем функцию в его начале. Это тот, который даст нам свободу настроить способ отображения информации системы. Этот файл конфигурации представляет собой сценарий bash, поэтому вы можете использовать любой синтаксис bash для его настройки. Вы можете увидеть больше информации о настройке в вашем Вики обеспокоены.

Этот информационный скрипт может быть установлен как в разных системах, таких как: Linux, Mac, Android и т. Д. Посмотреть дистрибутивы, в которые можно его установить, можно на его странице Github.

Использование Neofetch в Linux

Чтобы вывести информацию о системе и лого достаточно выполнить одну команду:

$ neofetch

Обратите внимание, если w3m-img или imagemagick не установлены в вашей системе, по умолчанию будет использован screenfetch и neofetch отобразит логотип linux в виде ASCI.

Информация о Ubuntu

Если вы все-таки хотите отобразить логотип дистрибутива linux в виде обычной картинки, нужно установить w3m-img или imagemagick в вашей системе. В Ubuntu:

$ sudo apt-get install w3m-img

В Red Hat / Fedora:

$ sudo yum install w3m-img

Затем запустите утилиту еще раз, вы увидите изображение обоев рабочего стола по умолчанию в виде обычного изображения:

$ neofetch

После первого запуска утилита создаст конфигурационный файл со своими настройками по адресу ~/.config/neofetch/config. Этот файл содержит функцию printinfo(), которая позволяет настроить информацию о системе, которую следует выводить. Вы можете удалить ненужные строки, добавить новые или изменить их. Чтобы открыть конфигурационный файл выполните:

$ vi ~/.config/neofetch/config

Содержимое файла будет выглядеть примерно вот так:

#!/usr/bin/env bash# vim:fdm=marker## Neofetch config file# https://github.com/dylanaraps/neofetch# Speed up script by not using unicodeexport LC_ALL=Cexport LANG=C# Info Options {{{# Info# See this wiki page for more info:# https://github.com/dylanaraps/neofetch/wiki/Customizing-Infoprintinfo() {info titleinfo underlineinfo «Model» modelinfo «OS» distroinfo «Kernel» kernelinfo «Uptime» uptimeinfo «Packages» packagesinfo «Shell» shellinfo «Resolution» resolutioninfo «DE» deinfo «WM» wminfo «WM Theme» wmthemeinfo «Theme» themeinfo «Icons» iconsinfo «Terminal» terminfo «Terminal Font» termfontinfo «CPU» cpuinfo «GPU» gpuinfo «Memory» memory# info «CPU Usage» cpu_usage# info «Disk» disk# info «Battery» battery# info «Font» font# info «Song» song# info «Local IP» localip# info «Public IP» publicip# info «Users» users# info «Birthday» birthdayinfo linebreakinfo colsinfo linebreak}

Чтобы узнать все доступные опции утилиты, а также параметры настройки выполните такую команду:

$ neofetch —help

Для проверки правильности всех настроек в файле конфигурации выполните:

$ neofetch —test

С помощью флага —ascii вы можете указать, что логотип дистрибутива нужно рисовать в текстовом формате:

$ neofetch —ascii

Вы можете запускать утилиту при каждом запуске терминала, просто добавив строчку запуска в конец ~/.bashrc:

$ vi ~/.bashrc

…neofetch

Установка Neofetch в Linux

Информация о системе linux при запуске терминала, это не только красиво, но и временами может быть очень полезно. Установить утилиту можно из сторонних репозиториев практически в любом дистрибутиве Linux. Дальше мы рассмотрим инструкции для самых популярных из них.

В Debian

$ echo «deb http://dl.bintray.com/dawidd6/neofetch jessie main» | sudo tee -a /etc/apt/sources.list$ curl -L «https://bintray.com/user/downloadSubjectPublicKey?username=bintray» -o Release-neofetch.key && sudo apt-key add Release-neofetch.key && rm Release-neofetch.key$ sudo apt-get update$ sudo apt-get install neofetch

В Red Hat или Fedora

Сначала необходимо установить пакет плагинов dnf-plugins-core:

$ sudo yum install dnf-plugins-core

Затем добавьте репозиторий и установите от туда neofetch:

$ sudo dnf copr enable konimex/neofetch$ sudo dnf install neofetch

В ArchLinux

Вы можете установить версии neofetch или neofetch-git из репозитория AUR с помощью packer или yaourt:

$ packer -S neofetch$ packer -S neofetch-git

Или:

$ yaourt -S neofetch$ yaourt -S neofetch-git

Git

Мощный кроссплатформенный инструмент для работы с репозиториями. Позволяет делать различные действия с git-репозиториями прямо из консоли сервера (например, копировать и обновлять, работать вместе с другими пользователями над одним проектом). 

Установка:

apt-get install git

Для просмотра всех команд введите:

git help

Основные команды:

git clone <ссылка на репозиторий> - копирует репозиторий на ваш сервер

git pull <ссылка на репозиторий> - обновляет репозиторий у вас на сервере (команду следует вводить, находясь в папке проекта)

git push - обновляет файлы с вашего сервера на репозиторий

Данная программа будет полезна тем, кто хочет оптимизировать работу с репозиториями и ускорить их перенос на сервер.

PhoneGap

  • акселерометром,
  • камерой,
  • компасом,
  • контактами,
  • файловым хранилищем,
  • геолокацией,
  • базой данных,
  • событиями, уведомлениями,
  • медия и др.
  • PhoneGap имеет простое API, что позволит легко начать разработку, для тех кто сталкивался с HTML, CSS и JavaScript.
  • Возможность использования любых существующих JavaScript библиотек (JQuery, Prototype, Sencha Touch)
  • Поддержка всех мобильных платформ
  • Пользовательский интерфейс визуализируется с помощью встроенного браузера. Это создает трудности в получении обратной связи по сравнению с нативным приложением.
  • Часто существующие плагины оказываются устаревшими, поэтому иногда придется писать свои.

Configuring Neofetch

As I have stated before, Neofetch is extremely customizable. You can change basically everything about its output. Let’s get a deeper understanding of how you can set your preferences and configure Neofetch in different ways.

If you want to change which Linux distribution or, more generally, which operating system’s logo appears in a colorful print upon invoking Neofetch, you can use the following command. Do note that you do not have to install these operating systems or distributions to be able to display their logo next to system information.

$ neofetch —ascii_distro_windows

Here is the output I got:

Pretty cool, indeed. You can do the same thing for any other OS/distro as well. For example, run the following command to display Debian’s logo:

$ neofetch —ascii_distro_debian

As promised earlier, you can also display custom images of your choice instead of operating system logos. Let’s learn how to do that.

First off, you are going to install some package dependencies, namely w3m-image and Imagemagick. w3m-image is used to display pictures and Imagemagick is necessary to create thumbnails. These are oftentimes handily made available in the package manager of most distributions. For instance, use the following command to install them both:

$ sudo apt install w3m-img imagemagick

You will also need a terminal that has support for \033[14t, xwininfo+xprop/xpdyinfo, or xdotool. Take a look at the following list to see which terminals support w3m-img:

  • Konsole
  • Gnome-terminal
  • Terminator
  • st
  • Urxvt
  • Xterm
  • Termite
  • Xfce4-Terminal

In case you have Terminology, iTerm, or kitty emulators installed on your PC, you do not need to install w3m-img at all.

Once everything is done and ready, run the following command to replace the OS logo with a custom image of your choice:

$ neofetch -w3m homeskDesktopcat.png

Simply replace the filename and the address with your file’s details and you are good to go.

Moving on, you can set Neofetch to start at terminal boot-up. So, if you want Neofetch to display your system information automatically every time you launch the terminal or open a new tab, run the following command:

$ nano ~.bashrc

This will allow you to edit the bashrc file. Next, add the line below at the end:

$ neofetch

Finally, you can save the file and quit. Also, you can apply the newly made changes with the help of the following command:

$ source ~.bashrc

And with that done, you will now see Neofetch display all your system’s details every time you open Terminal or a new tab.

Next, we have customizing options, and before we get into them, let me tell you there is a ton of them. It would be foolish to try to show each and every one of them in this article, but we are going to list some useful ones, nonetheless.

The disable operator can be used to remove/hide a certain piece of information from Neofetch’s output. For example, if you wish to remove memory from the list, use the following command:

$ neofetch —disable memory

Now you as can see that the entry for memory is disabled. You can do the same for any other entry as well. If you want to further learn how you can customize Neofetch to your liking, use the following command to see a list of options:

$ neofetch —help

Another thing worth mentioning is that upon starting Neofetch for the first time, a configuration file is created at the address: $HOME /.config / neofetch / config.conf

You can make changes to this file to permanently enable or disable particular system information details. The same configuration file will work on newer, updated versions of Neofetch as well, so you will not have to edit it every single time.

EXAMPLES top

       The example below implements a basic tee(1) program using the tee()
       system call.  Here is an example of its use:

           $ date |./a.out out.log | cat
           Tue Oct 28 10:06:00 CET 2014
           $ cat out.log
           Tue Oct 28 10:06:00 CET 2014

   Program source

       #define _GNU_SOURCE
       #include <fcntl.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <errno.h>
       #include <limits.h>

       int
       main(int argc, char *argv[])
       {
           int fd;
           int len, slen;

           if (argc != 2) {
               fprintf(stderr, "Usage: %s <file>\n", argv);
               exit(EXIT_FAILURE);
           }

           fd = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0644);
           if (fd == -1) {
               perror("open");
               exit(EXIT_FAILURE);
           }

           do {
               /*
                * tee stdin to stdout.
                */
               len = tee(STDIN_FILENO, STDOUT_FILENO,
                         INT_MAX, SPLICE_F_NONBLOCK);

               if (len < 0) {
                   if (errno == EAGAIN)
                       continue;
                   perror("tee");
                   exit(EXIT_FAILURE);
               } else
                   if (len == 0)
                       break;

               /*
                * Consume stdin by splicing it to a file.
                */
               while (len > 0) {
                   slen = splice(STDIN_FILENO, NULL, fd, NULL,
                                 len, SPLICE_F_MOVE);
                   if (slen < 0) {
                       perror("splice");
                       break;
                   }
                   len -= slen;
               }
           } while (1);

           close(fd);
           exit(EXIT_SUCCESS);
       }

Локаль по-умолчанию

Хорошо, нужные локали у нас теперь есть, осталось только задать локаль по умолчанию:

$ sudo update-locale LANG=ru_RU.UTF-8

Эта команда запишет в файл строку:

LANG=ru_RU.UTF-8

После этого надо будет перезайти в систему. И проверяем информацию о языковом окружении:

$ locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

Теперь все правильно, так что запишем эту информацию в файл :

$ locale | sudo tee /etc/default/locale
$ cat /etc/default/locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

Use Neofetch to display Linux distribution logo in ASCII art

Neofetch is a command line system information tool written in BASH that displays information about your system next to an image, generally your OS logo, or any ASCII file of your choice.

Neofetch is highly customizable through the use of command line flags or the user config file. There are over 50 config options to mess around with and there’s the print_info() function and friends which let you add your own custom info. You can read its wiki page for more information.

Neofetch can also be used in macOS and BSD systems.

Installing Neofetch

To install Neoftech in Debian, Ubuntu and other Ubuntu-based Linux distributions such as Linux Mint, elementary OS, Linux Lite, Zorin OS etc, use the command:

If you are using Ubuntu 16.04 or if the above command didn’t work, you can use this PPA:

For other Linux distributions, check the installation instructions on Neofetch GitHub page.

Using Neofetch is fairly simple. Just type neofetch in the terminal and it will display the Linux logo in ascii form:

Подробная информация о локалях

Более подробную информацию об установленных в системе локалях можно посмотреть так:

$ locale -a -v
locale: en_US.utf8      archive: /usr/lib/locale/locale-archive
-------------------------------------------------------------------------------
    title | English locale for the USA
   source | Free Software Foundation, Inc.
  address | http://www.gnu.org/software/libc/
    email | [email protected]
 language | American English
territory | United States
 revision | 1.0
     date | 2000-06-24
  codeset | UTF-8

locale: ru_RU.utf8      archive: /usr/lib/locale/locale-archive
-------------------------------------------------------------------------------
    title | Russian locale for Russia
   source | RAP
  address | Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark
    email | [email protected]
 language | Russian
territory | Russia
 revision | 1.0
     date | 2000-06-29
  codeset | UTF-8

locale: ru_UA.utf8      archive: /usr/lib/locale/locale-archive
-------------------------------------------------------------------------------
    title | Russian locale for Ukraine
   source | RFC 2319
    email | [email protected]
 language | Russian
territory | Ukraine
 revision | 1.0
     date | 2000-06-29
  codeset | UTF-8

locale: C.UTF-8         directory: /usr/lib/locale/C.UTF-8
-------------------------------------------------------------------------------
    title | C locale
    email | [email protected]
 language | C
 revision | 1.6
     date | 2016-08-08
  codeset | UTF-8

Часть локалей размещена в архиве , а часть — в директориях внутри .

Шаг 1: Открываем терминал

Обычно в ОС уже есть какой-то терминал, и для начала можно использовать его. Если хочется больше функций и возможностей кастомизации, то есть из чего выбирать. Некоторые терминалы позволяют открывать вкладки, разделять экран и даже рендерить картинки. Можно найти на любой вкус, например, стилизованный под старый ламповый монитор.

cool-retro-terminal

Выбор терминала — это тема для отдельной статьи. Кратко: если у вас Linux, начните с . На macOS популярен iTerm2, но я его не использовал, поэтому не могу ни поругать, ни похвалить.

Для меня важно чтобы и на компьютере с Linux, и на рабочем ноутбуке с macOS был один и тот же терминал с одинаковыми настройками. Я выбирал среди кроссплатформенных и остановился на kitty

Шаг 5: Сохраняем настройки

Чтобы не настраивать каждый раз все программы заново, нужно где-то сохранять настройки.

Конфиги — это файлы. Обычно они хранятся в корневой директории пользователя вместе со скриптами инициализации командной оболочки, например, в папке . Если вы установили fish, то найдёте папку и в ней файлы с настройками. Самый простой способ сохранить конфиги — сохранить их в Git-репозиторий.

Имена файлов и папок с настройками обычно начинаются с точки, поэтому одним словом их называют «dotfiles». На момент написания статьи на GitHub опубликовано 138 425 репозиториев с именем dotfiles — есть куда подсмотреть.

На странице awesome-dotfiles вы найдёте много информации про dotfiles. Там же есть ссылки на инструменты, которые помогают управлять dotfiles.

Я использую yadm. Мне важна кроссплатформенность, поэтому пригождается его возможность создавать альтернативные версии файлов для разных ОС.

Что такое Neofetch?

Независимо от того, являетесь ли вы новичком в Ubuntu или опытным пользователем, я уверен, что то же самое случалось и с вами когда-то. Вот через несколько недель после установки я точно не помню, что Версия Ubuntu вы установили на свой компьютер. По этой причине я считаю, что это приложение хорошо, если оно установлено.

Neofetch — это инструмент, разработанный на Bash что позволяет нам получить основную информацию об установленной системе. Это идеальный инструмент, позволяющий с первого взгляда узнать, что Ubuntu установлена ​​и что она содержит основные функции. Для получения более полной информации необходимо использовать более полные программы.

Информация, которую Neofetch показывает о вашей системе, выполняется вместе с логотипом вашей операционной системы или выбранным вами файлом ascii. Основная цель Neofetch и то, для чего он был разработан, — быть используется со скриншотами. В основном, чтобы показать другим пользователям, какую операционную систему / дистрибутив вы используете. Таким образом, с первого взгляда другой пользователь может легко увидеть разрешение компьютера, обои, которые вы используете, тему рабочего стола, значки и другую интересную информацию.

Автоматическое удаление старых файлов

Все мы часто качаем файлы из интернета, это торренты, фильмы, музыка и т д. И все это со временем накапливается в папке загрузки если ненужное вовремя не удалять, а нужное не перемещать в другие папки. Тогда папка загрузок начинает напоминать огромную свалку где вообще нереально что-то найти. У себя я всегда время от времени сортировал  и удалял файлы, но когда видел такое у знакомых брался за голову. Есть способ упростить очистку папки загрузок.

Утилита find позволяет находить все файлы, созданные позже определенной даты и выполнять с ними нужное действие. Все нужные файлы будем вовремя рассортировывать и перемещать по папкам назначения, а все что останутся в загрузках будут через два дня автоматически удаляться. Знание что файлы будут удалены заставит их вовремя переместить куда нужно.

Вот так выглядит сама команда:

Если не хотите полностью удалять файлы можно перемещать их в корзину:

Подробнее о работе find можно почитать тут. Для полной автоматизации добавим выполнение этой команды каждый день в расписание cron:

Теперь давние файлы будут автоматически удаляться каждый день.

Заключение

В консоли может быть сложно работать, если ее не «приручить». Но если выбрать удобную для себя командную оболочку и один раз ее настроить, то она будет постоянно помогать вам.

Чтобы не настраивать рабочее окружение на каждом новом компьютере заново, сохраняйте конфиги в Git-репозиторий. Но не забывайте о безопасности — следите, чтобы в репозиторий не попал ключи и пароли.

На замену старым утилитам приходят новые, нацеленные на пользователя, а не на скрипты. Используйте их и ищите новые! Если вам кажется, что утилита слишком сложная, возможно, вы такой не один и кто-то уже написал более простой в использовании аналог.

И самое главное — читайте документацию и исследуйте. Порой интересные возможности обнаруживаются у, казалось бы, полностью знакомых утилит.

Если будут вопросы или вам понадобится помощь с освоением консоли, пишите мне в Telegram @osipxd. Ещё я иногда пишу в канал @rareilly заметки про Android и вообще про всё интересное, что нахожу

Спасибо за внимание!

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: