more pretty md files

This commit is contained in:
Evgenii Alekseev 2016-02-02 00:55:13 +07:00
parent c0ad1a6912
commit 518956bdff
39 changed files with 1550 additions and 484 deletions

View File

@ -7,7 +7,11 @@ tags: zshrc, configuration, linux
title: About zshrc
short: about-zshrc
---
It is first paper in my blog (I think I need something here for tests =)). There are many similar articles, and I'll not be an exception. I just want to show my `.zshrc` and explain what it does and why it is needed. Also any comments or additions are welcome. It is a translated paper from Russian ([original](//archlinux.org.ru/forum/topic/12752/ "Forum thread")).
It is first paper in my blog (I think I need something here for tests =)). There
are many similar articles, and I'll not be an exception. I just want to show my
`.zshrc` and explain what it does and why it is needed. Also any comments or
additions are welcome. It is a translated paper from Russian
([original](//archlinux.org.ru/forum/topic/12752/ "Forum thread")).
<!--more-->
@ -19,13 +23,17 @@ First install recommended minima:
pacman -Sy pkgfile zsh zsh-completions zsh-syntax-highlighting
```
[pkgfile](//www.archlinux.org/packages/pkgfile/ "Archlinux package") is a very useful utility. Also this command will install shell, additional completion and syntax highlighting.
[pkgfile](//www.archlinux.org/packages/pkgfile/ "Archlinux package") is a very
useful utility. Also this command will install shell, additional completion and
syntax highlighting.
## <a href="#configuration" class="anchor" id="configuration"><span class="octicon octicon-link"></span></a>Shell configuration
All options are avaible [here](//zsh.sourceforge.net/Doc/Release/Options.html "zsh documentation").
All options are avaible [here](//zsh.sourceforge.net/Doc/Release/Options.html
"zsh documentation").
Set history file and number of commands in cache of the current session and in the history file:
Set history file and number of commands in cache of the current session and in
the history file:
```bash
# history
@ -34,7 +42,8 @@ HISTSIZE=500000
SAVEHIST=500000
```
I can not remember all `Ctrl+` combinations so I bind keys to its default usages:
I can not remember all `Ctrl+` combinations so I bind keys to its default
usages:
```bash
# bindkeys
@ -48,7 +57,9 @@ bindkey '\e[5~' up-line-or-history # page-up
bindkey '\e[6~' down-line-or-history # page-down
```
But in this case `Up`/`Down` arrows are used to navigate through the history based on **already entered part** of a command. And `PgUp`/`PgDown` **will ignore** already entered part of a command.
But in this case `Up`/`Down` arrows are used to navigate through the history
based on **already entered part** of a command. And `PgUp`/`PgDown` **will
ignore** already entered part of a command.
Command autocomplete:
@ -60,7 +71,9 @@ zstyle ':completion:*' insert-tab false
zstyle ':completion:*' max-errors 2
```
Full command autocomplete will be enabled. `insert-tab false` will enable autocomplete for **non-entered** commands. `max-errors` sets maximum number of errors that could be corrected.
Full command autocomplete will be enabled. `insert-tab false` will enable
autocomplete for **non-entered** commands. `max-errors` sets maximum number of
errors that could be corrected.
Prompt:
@ -192,7 +205,10 @@ ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'
```
In first line highlighting is turned on. Next main, brackets and pattern highlighting are turned on. Patterns are set below (`rm -rf *` in the example). Also `root` and `cursor` highlighting may be turned on. Colors syntax is understandable, `fg` is font color, `bg` is background color.
In first line highlighting is turned on. Next main, brackets and pattern
highlighting are turned on. Patterns are set below (`rm -rf *` in the example).
Also `root` and `cursor` highlighting may be turned on. Colors syntax is
understandable, `fg` is font color, `bg` is background color.
## <a href="#prompt" class="anchor" id="prompt"><span class="octicon octicon-link"></span></a>$PROMPT and $RPROMPT
@ -219,7 +235,9 @@ else
fi
```
`fg` is font color, `bg` is background color. `_bold` and `_no_bold` regulate the tint. Commands should be in `%{ ... %}` so they do not appear. Avaible colors are:
`fg` is font color, `bg` is background color. `_bold` and `_no_bold` regulate
the tint. Commands should be in `%{ ... %}` so they do not appear. Avaible
colors are:
```bash
black
@ -276,11 +294,14 @@ $returncode\
"%{$fg_bold[white]%}]%{$reset_color%}"
```
My RPROMPT shows current time, battery change and last returned code. `precmd()` is necessary for automatic updating. The construct `$(if.true.false)` is conditional statement in `zsh`.
My RPROMPT shows current time, battery change and last returned code. `precmd()`
is necessary for automatic updating. The construct `$(if.true.false)` is
conditional statement in `zsh`.
## <a href="#aliases" class="anchor" id="aliases"><span class="octicon octicon-link"></span></a>Aliases
**Copy only those aliases that you need.** If any alias uses application that is not installed it will leads to fail of loading of configuration file.
**Copy only those aliases that you need.** If any alias uses application that is
not installed it will leads to fail of loading of configuration file.
Small useful (or maybe not) function:
@ -311,7 +332,8 @@ alias less='vimpager'
alias zless='vimpager'
```
Here are ls aliases (see [man ls](//unixhelp.ed.ac.uk/CGI/man-cgi?ls "Man page")):
Here are ls aliases (see [man ls](//unixhelp.ed.ac.uk/CGI/man-cgi?ls "Man
page")):
```bash
alias ls='show_which ls && ls --color=auto --group-directories-first'
@ -360,7 +382,8 @@ else
fi
```
Here are global aliases. If they are enable the command `cat foo g bar` will be equivalent the command `cat foo | grep bar`:
Here are global aliases. If they are enable the command `cat foo g bar` will be
equivalent the command `cat foo | grep bar`:
```bash
# global alias
@ -471,7 +494,8 @@ su () {
}
```
Function that replaces original `rm` command. If you type `rm` it will be equivalent moving to trash an you can easily restore a file:
Function that replaces original `rm` command. If you type `rm` it will be
equivalent moving to trash an you can easily restore a file:
```bash
rm () {
@ -532,7 +556,8 @@ yatest () {
## <a href="#variables" class="anchor" id="variables"><span class="octicon octicon-link"></span></a>Variables
It is recommended to set own variables in `~/.zshenv`. But I have everything stored in the single file.
It is recommended to set own variables in `~/.zshenv`. But I have everything
stored in the single file.
Here are path, mask of new files, editor and pager:
@ -546,7 +571,8 @@ export EDITOR="vim"
export PAGER="vimpager"
```
Here is hashes. If they are enable the command `~global` will be equivalent the command `/mnt/global`:
Here is hashes. If they are enable the command `~global` will be equivalent the
command `/mnt/global`:
```bash
# hash

View File

@ -7,13 +7,21 @@ tags: archlinux, linux, building, qutim
title: Building Qutim using Qt5
short: building-qutim-using-qt5
---
[Qutim](//qutim.org) is a multiprotocol and cross platform messenger. It is written on `CPP` using Qt library. The project is actively developed. In this paper I will say about building this package in Archlinux using Qt5 library (instead of Qt4 which is used in current AUR packages).
[Qutim](//qutim.org) is a multiprotocol and cross platform messenger. It is
written on `CPP` using Qt library. The project is actively developed. In this
paper I will say about building this package in Archlinux using Qt5 library
(instead of Qt4 which is used in current AUR packages).
<!--more-->
# <a href="#problems" class="anchor" id="problems"><span class="octicon octicon-link"></span></a>What's wrong?
This package uses [qbs](//qt-project.org/wiki/qbs "Wiki") for building, which is a bit strange IMHO. A package, which is necessary for building, is [in AUR](//aur.archlinux.org/packages/qbs-git/ "AUR") . I recommend to use git version of the package. When I asked Andrea Scarpino (who maintains KDE and Qt packages into the official repos) about qbs, he told me "we will support it in time". And I agree with him, the project seems to be a little unstable.
This package uses [qbs](//qt-project.org/wiki/qbs "Wiki") for building, which is
a bit strange IMHO. A package, which is necessary for building, is [in
AUR](//aur.archlinux.org/packages/qbs-git/ "AUR"). I recommend to use git
version of the package. When I asked Andrea Scarpino (who maintains KDE and Qt
packages into the official repos) about qbs, he told me "we will support it in
time". And I agree with him, the project seems to be a little unstable.
# <a href="#prepare" class="anchor" id="prepare"><span class="octicon octicon-link"></span></a>Prepare
@ -26,21 +34,28 @@ yaourt -S --asdeps jreen-git qbs-git
### <a href="#qbs" class="anchor" id="qbs"><span class="octicon octicon-link"></span></a>qbs settings
You may read about qbs [on the link](//qt-project.org/wiki/qbs "Wiki") or see examples which are provides by the package. qbs uses configuration file that firstly you must create and secondly it is stored in your home directory. In theory a configuration file creating (`~/.config/QtProject/qbs.conf`) looks like this:
You may read about qbs [on the link](//qt-project.org/wiki/qbs "Wiki") or see
examples which are provides by the package. qbs uses configuration file that
firstly you must create and secondly it is stored in your home directory. In
theory a configuration file creating (`~/.config/QtProject/qbs.conf`) looks like
this:
```bash
qbs-setup-qt --detect
qbs-detect-toolchains
```
Firstly we find Qt libraries. Then we find toolchains (such as compilers). And next we must insert a toolchain into Qt profile (for example, we need `clang` toolchain):
Firstly we find Qt libraries. Then we find toolchains (such as compilers). And
next we must insert a toolchain into Qt profile (for example, we need `clang`
toolchain):
```bash
sed 's/clang\\/qt-5-2-0\\/g' -i ~/.config/QtProject/qbs.conf
```
And there are other ways. You may edit the file manually or use `qbs-config-ui` or `qbs-config`.
So, we have created the configuration file and put it into build directory:
And there are other ways. You may edit the file manually or use `qbs-config-ui`
or `qbs-config`. So, we have created the configuration file and put it into
build directory:
```ini
[General]
@ -69,7 +84,7 @@ qutim\Qt\core\libPath=/usr/lib
qutim\Qt\core\mkspecPath=/usr/lib/qt/mkspecs/linux-g++
qutim\Qt\core\namespace=
qutim\Qt\core\pluginPath=/usr/lib/qt/plugins
qutim\Qt\core\qtConfig=minimal-config, small-config, medium-config, large-config, full-config, gtk2, gtkstyle, fontconfig, libudev, evdev, xlib, xcb-glx, xcb-xlib, xcb-sm, xrender, accessibility-atspi-bridge, linuxfb, c++11, accessibility, opengl, shared, qpa, reduce_exports, reduce_relocations, clock-gettime, clock-monotonic, mremap, getaddrinfo, ipv6ifname, getifaddrs, inotify, eventfd, system-jpeg, system-png, png, system-freetype, no-harfbuzz, system-zlib, nis, cups, iconv, glib, dbus, dbus-linked, openssl-linked, xcb, xinput2, alsa, pulseaudio, icu, concurrent, audio-backend, release
qutim\Qt\core\qtConfig=minimal-config, small-config, medium-config,large-config, full-config, gtk2, gtkstyle, fontconfig, libudev, evdev, xlib,xcb-glx, xcb-xlib, xcb-sm, xrender, accessibility-atspi-bridge, linuxfb, c++11,accessibility, opengl, shared, qpa, reduce_exports, reduce_relocations,clock-gettime, clock-monotonic, mremap, getaddrinfo, ipv6ifname, getifaddrs,inotify, eventfd, system-jpeg, system-png, png, system-freetype, no-harfbuzz,system-zlib, nis, cups, iconv, glib, dbus, dbus-linked, openssl-linked, xcb,xinput2, alsa, pulseaudio, icu, concurrent, audio-backend, release
qutim\Qt\core\version=5.2.0
qutim\cpp\compilerName=clang++
qutim\cpp\toolchainInstallPath=/usr/bin
@ -91,7 +106,8 @@ diff -ruN qutim.orig/core/libqutim.qbs qutim/core/libqutim.qbs
@@ -75,7 +75,7 @@
cpp.linkerFlags: {
var flags = base;
if (qbs.toolchain.contains("clang") && qbs.targetOS.contains("linux"))
if (qbs.toolchain.contains("clang") &&
qbs.targetOS.contains("linux"))
- flags = flags.concat("-stdlib=libc++ -lcxxrt");
+ flags = flags.concat("-lc++abi");
return flags;
@ -102,9 +118,12 @@ diff -ruN qutim.orig/core/libqutim.qbs qutim/core/libqutim.qbs
And the second one is Vk plugin:
```diff
diff -ruN qutim.orig/protocols/vkontakte/vreen/vreen.qbs qutim/protocols/vkontakte/vreen/vreen.qbs
--- qutim.orig/protocols/vkontakte/vreen/vreen.qbs 2014-01-06 15:41:42.000000000 +0400
+++ qutim/protocols/vkontakte/vreen/vreen.qbs 2014-01-06 15:46:47.142178486 +0400
diff -ruN qutim.orig/protocols/vkontakte/vreen/vreen.qbs
qutim/protocols/vkontakte/vreen/vreen.qbs
--- qutim.orig/protocols/vkontakte/vreen/vreen.qbs 2014-01-06
15:41:42.000000000 +0400
+++ qutim/protocols/vkontakte/vreen/vreen.qbs 2014-01-06 15:46:47.142178486
+0400
@@ -5,6 +5,7 @@
property string vreen_qml_path: "bin"
property string vreen_lib_path: "lib"
@ -142,7 +161,10 @@ cd qutim
HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
```
I want to create a universal recipe for the building, thus we must set `$HOME` directory. Flag `-j` means number of jobs, `-d` means build directory, `release` means building type (debug, release), `profile` is used profile, which is described in the configuration file.
I want to create a universal recipe for the building, thus we must set `$HOME`
directory. Flag `-j` means number of jobs, `-d` means build directory, `release`
means building type (debug, release), `profile` is used profile, which is
described in the configuration file.
## <a href="#install" class="anchor" id="install"><span class="octicon octicon-link"></span></a>Installation
@ -150,7 +172,8 @@ I want to create a universal recipe for the building, thus we must set `$HOME` d
HOME=$(pwd) sudo qbs install -d ../build --install-root "/usr" profile:qutim
```
We must set root directory (`--install-root`), because without this option the package will be installed into `/` (`/bin` and `/lib`).
We must set root directory (`--install-root`), because without this option the
package will be installed into `/` (`/bin` and `/lib`).
## <a href="#pkgbuild" class="anchor" id="pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD

View File

@ -12,7 +12,13 @@ I decided to change my site. You may find short list of changes below.
<!--more-->
## <a href="#list" class="anchor" id="list"><span class="octicon octicon-link"></span></a>The list of changes:
* I rented a `arcanis.me` domain. Now I have a normal address, as well as all normal people have it. Small description of how to do it. Firstly, you should rent domain and activate DNS editing (it is called [DNS-master](//www.nic.ru/dns/service/dns_hosting/ "Service page") for Ru-center). I pay about $30 in year. Then you should create CNAME file in your repository; this file has line with your domain name. And finally you should create two DNS records for your domain:
* I rented a `arcanis.me` domain. Now I have a normal address, as well as all
normal people have it. Small description of how to do it. Firstly, you should
rent domain and activate DNS editing (it is called
[DNS-master](//www.nic.ru/dns/service/dns_hosting/ "Service page") for
Ru-center). I pay about $30 in year. Then you should create CNAME file in your
repository; this file has line with your domain name. And finally you should
create two DNS records for your domain:
```bash
@ A 192.30.252.153
@ -21,7 +27,8 @@ I decided to change my site. You may find short list of changes below.
www CNAME @
```
(Symbol `@` means you root domain.) And next wait for two hours. You may find out the result as follows:
(Symbol `@` means you root domain.) And next wait for two hours. You may
find out the result as follows:
```bash
$ dig domain.name +nostats +nocomments +nocmd
@ -33,8 +40,11 @@ I decided to change my site. You may find short list of changes below.
...
```
* Also I've created [my own repo](ftp://repo.arcanis.me/repo "Repository"), which will contain some AUR packages that I'm using. Support of both architectures is planned.
* Since the repo requires ftp protocol, I've changed samba shared folders to ftp. The problem of access has been resolved by using mount options:
* Also I've created [my own repo](ftp://repo.arcanis.me/repo "Repository"),
which will contain some AUR packages that I'm using. Support of both
architectures is planned.
* Since the repo requires ftp protocol, I've changed samba shared folders to
ftp. The problem of access has been resolved by using mount options:
```bash
# only read rights
@ -44,7 +54,9 @@ I decided to change my site. You may find short list of changes below.
/home/arcanis/share.fs /srv/ftp/share ext4 defaults,rw 0 0
```
Login on special user and option `anon_world_readable_only=YES` are used for prevent access to the music directory. Also here is my `/etc/vsftpd.conf` configuration file:
Login on special user and option `anon_world_readable_only=YES` are used for
prevent access to the music directory. Also here is my `/etc/vsftpd.conf`
configuration file:
```bash
anonymous_enable=YES
@ -67,10 +79,12 @@ I decided to change my site. You may find short list of changes below.
listen=YES
```
Now let's add redirection from `repo.arcanis.me` to the needed IP address. To do this, add the following entry in DNS:
Now let's add redirection from `repo.arcanis.me` to the needed IP address.
To do this, add the following entry in DNS:
```bash
repo A 89.249.170.38
```
* Also there are plans to buy a server for compiling packages and hosting the repository, filesharing and backups.
* Also there are plans to buy a server for compiling packages and hosting the
repository, filesharing and backups.

View File

@ -13,13 +13,17 @@ It is a short paper devoted to creation own ArchLinux repository.
## <a href="#prepare" class="anchor" id="prepare"><span class="octicon octicon-link"></span></a>Prepare
First find a server and desire to have sex with it. It is recommended to use Archlinux on it, but it is not necessarily - because you may create special root for Archlinux. Also you need two packages, `devtools` and `pacman`:
First find a server and desire to have sex with it. It is recommended to use
Archlinux on it, but it is not necessarily - because you may create special root
for Archlinux. Also you need two packages, `devtools` and `pacman`:
```bash
pacman -Sy devtools
```
[devtools](//www.archlinux.org/packages/devtools/ "Archlinux package") is script set for building automation in the clean chroot. I think most of Arch maintainers use it.
[devtools](//www.archlinux.org/packages/devtools/ "Archlinux package") is script
set for building automation in the clean chroot. I think most of Arch
maintainers use it.
Let's create working directories and set colors:
@ -59,11 +63,15 @@ if [ ! -d "${STAGINGDIR}" ]; then
fi
```
`${REPODIR}/{i686,x86_64}` are directories for repository, `${PREPAREDIR}` is directory where compiled packages will be stored, `${STAGINGDIR}` is one where packages will be built.
`${REPODIR}/{i686,x86_64}` are directories for repository, `${PREPAREDIR}` is
directory where compiled packages will be stored, `${STAGINGDIR}` is one where
packages will be built.
## <a href="#theory" class="anchor" id="theory"><span class="octicon octicon-link"></span></a>A bit of theory
Create directory, share it (using [ftp](/en/2014/03/06/site-changes/ "Site changes paper"), for example). It has two subdirectories - `i686` and `x86_64` - for each architecture respectively. And fill them with a set of packages.
Create directory, share it (using [ftp](/en/2014/03/06/site-changes/ "Site
changes paper"), for example). It has two subdirectories - `i686` and `x86_64` -
for each architecture respectively. And fill them with a set of packages.
Updating repository may be split into the following steps:
@ -149,17 +157,22 @@ if [ ${USEGPG} == "yes" ]; then
fi
```
It is recommended to configure [gpg-agent](//wiki.archlinux.org/index.php/GPG#gpg-agent "ArchWiki").
It is recommended to configure
[gpg-agent](//wiki.archlinux.org/index.php/GPG#gpg-agent "ArchWiki").
### <a href="#list" class="anchor" id="list"><span class="octicon octicon-link"></span></a>Creating the list of packages
```bash
# creating packages list
cd "${PREPAREDIR}"
i686_PACKAGES=$(/usr/bin/find * -name '*-i686.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
x86_64_PACKAGES=$(/usr/bin/find * -name '*-x86_64.pkg.tar.xz' -o -name '*-any.pkg.tar.xz')
echo -e "${bwhite}[II] ${bblue}=>${cclose} i686 packages: \n${bwhite}${i686_PACKAGES}${cclose}"
echo -e "${bwhite}[II] ${bblue}=>${cclose} x86_64 packages: \n${bwhite}${x86_64_PACKAGES}${cclose}"
i686_PACKAGES=$(/usr/bin/find * -name '*-i686.pkg.tar.xz' -o -name
'*-any.pkg.tar.xz')
x86_64_PACKAGES=$(/usr/bin/find * -name '*-x86_64.pkg.tar.xz' -o -name
'*-any.pkg.tar.xz')
echo -e "${bwhite}[II] ${bblue}=>${cclose} i686 packages:
\n${bwhite}${i686_PACKAGES}${cclose}"
echo -e "${bwhite}[II] ${bblue}=>${cclose} x86_64 packages:
\n${bwhite}${x86_64_PACKAGES}${cclose}"
```
### <a href="#updating" class="anchor" id="updating"><span class="octicon octicon-link"></span></a>Repository update
@ -223,7 +236,8 @@ cd "${STAGINGDIR}"
### <a href="#symlinks" class="anchor" id="symlinks"><span class="octicon octicon-link"></span></a>Creating symlinks
You may want to create a directory, which will contain symlinks on actual packages with names, which does not contain version:
You may want to create a directory, which will contain symlinks on actual
packages with names, which does not contain version:
```bash
# creating symlinks
@ -248,7 +262,8 @@ fi
### <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>File
Here is [the scripts](//github.com/arcan1s/repo-scripts "GitHub"). Download source tarballs and run script (editing variables if it is necessary).
Here is [the scripts](//github.com/arcan1s/repo-scripts "GitHub"). Download
source tarballs and run script (editing variables if it is necessary).
## <a href="#using" class="anchor" id="using"><span class="octicon octicon-link"></span></a>Repository usage

View File

@ -7,27 +7,89 @@ tags: настройка, linux, archlinux
title: Apps which I use
short: my-desktop
---
Here is a short paper devoted to the set of applications and extensions that I use everyday on my home computer.
Here is a short paper devoted to the set of applications and extensions that I
use everyday on my home computer.
<!--more-->
## <a href="#apps" class="anchor" id="apps"><span class="octicon octicon-link"></span></a>Applications
* **Shell** is zshrc and nothing else. You may find a small description of my settings [here](/en/2014/01/14/about-zshrc/ "About zshrc paper"). It is stored [here](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc "File") (or [here](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server "File")).
* **DE** - I use KDE as Desktop Environment. And that's why most of apps are qt-based. Some KDE settings are below.
* **Graphic editors** - [gwenview](//kde.org/applications/graphics/gwenview/ "Gwenview Homepage") is used for viewing images, [kolourpaint](//kde.org/applications/graphics/kolourpaint/ "Kolourpaint Homepage") is used for simple editing pixel images, [gimp](//www.gimp.org/ "Gimp Homepage") (without plugins, since they are not needed for me) - for editing and [inkskape](//www.inkscape.org/ "Inkskape Homepage") is used as editor of vector graphics.
* **Browser** - I use Firefox. Some Firefox settings are below. Chromium is used as additional browser, elinks is used as console browser.
* **IM client** is [qutIM](//qutim.org "Qutim Homepage"). It is a cross-platform, multiprotocol and full featured client. [Kopete](//kde.org/applications/internet/kopete/ "Kopete Homepage"), which I used before it, crashes, does not work correctly and does not work normally with codepage. Also I don't use a console client since I use a tablet IM. And I use Skype for skype obviously.
* **Mail client** is [kmail](//kde.org/applications/internet/kmail/ "Kmail Homepage"). It is a full featured client (and I use most of them), looks pretty and it is easy to use. If it will be DE-undepended it will be better.
* **IRC client** is [konversation](//konversation.kde.org/ "Konversation Homepage"). It is a simple IRC client. Though as far as I remember qutIM also supports IRC protocol, I prefre to use a special IRC client.
* **Torrent client** is [transmission](//www.transmissionbt.com/ "Transmission Homepage") with Qt5 interface (it has gtk interface too). It is also used for server but without GUI.
* **Video player** is [mpv](//mpv.io/ "Mpv Homepage"), since mplayer died and mplayer2 was born deadborn. Graphical frontend are not needed.
* **Audio player** is [qmmp](//qmmp.ylsoftware.com/ "Qmmp Homepage"). It is a good winamp-like player. Flick of the wrist you may make a handy interface for it (simpleui).
* **Audio/video editors**: [kdenlive](//kde-apps.org/content/show.php?content=29024 "Kdenlive Homepage") is used as video editor, [soundkonverter](//kde-apps.org/content/show.php?content=29024) is used as audio editor, [easytag](//wiki.gnome.org/Apps/EasyTAG "Easytag Homepage") is used for editing audio tags (unfortunately, it is a gtk-based, but I didn't find a better tool for it). And command line and scripts written on bash are used too.
* **Office**: [Kingsoft Office](//wps-community.org/ "KO Homepage") is used as alternative of Microsoft Office; it has no any feature, but it looks normally, it is qt-based and it is said that it has a good support for standart formats. (Linux version has an alfa stage.) [Kile](//kile.sourceforge.net/ "Kile Homepage") is used as LaTeX frontend. [Okular](//kde.org/applications/graphics/okular/ "Okular Homepage") is used as document viewer. And I use [GoldenDict](//goldendict.org/ "GoldenDict Homepage") as dictionary.
* **Editors**: [kwrite](//www.kde.org/applications/utilities/kwrite/ "Kwrite Homepage") is used as a simple text editor, [kate](//www.kde.org/applications/utilities/kate/ "Kate Homepage") (and [cpp-helper](//zaufi.github.io/kate-cpp-helper-plugin.html "Plugin Homepage") plugin) is used as advanced text editor. And of course I use vim in console.
* **Scientific soft**. Chemical visualizers are [vmd](//www.ks.uiuc.edu/Research/vmd/ "VMD Homepage"), [chimera](//www.cgl.ucsf.edu/chimera/ "Chimera Homepage") and [pymol](//pymol.org/ "Pymol Homepage"). Physics simulator is [step](//kde.org/applications/education/step/ "Step Homepage"). Calculator is [kalgebra](//kde.org/applications/education/kalgebra/ "Kalgebra Homepage") and console [ipython](//ipython.org/ "ipython Homepage"). [Qtiplot](//qtiplot.com/ "Qtiplot Homepage") is used for drawing graphs and data analysis (scidavis, which is its fork, unfortunately, is half-dead), [grace](//plasma-gate.weizmann.ac.il/Grace/ "Grace Homepage") is used for only drawing graphs. [Chemtool](//ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html "Chemtool Homepage") is used as alternative of ChemDraw.
* **System applications**. File manager is [dolphin](//kde.org/applications/system/dolphin/ "Dolphin Homepage"), [doublecmd](//doublecmd.sourceforge.net/ "Doublecmd Homepage") is used as twin-panel manager. Terminal emulators are [yakuake](//yakuake.kde.org/ "Yakuake Homepage") and [urxvt](//software.schmorp.de/pkg/rxvt-unicode.html "Urxvt Homepage") (as windowed emulator). Archiver graphical interface is [ark](//kde.org/applications/utilities/ark/ "Ark Homepage").
* **Shell** is zshrc and nothing else. You may find a small description of my
settings [here](/en/2014/01/14/about-zshrc/ "About zshrc paper"). It is stored
[here](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc "File") (or
[here](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server
"File")).
* **DE** - I use KDE as Desktop Environment. And that's why most of apps are
qt-based. Some KDE settings are below.
* **Graphic editors** - [gwenview](//kde.org/applications/graphics/gwenview/
"Gwenview Homepage") is used for viewing images,
[kolourpaint](//kde.org/applications/graphics/kolourpaint/ "Kolourpaint
Homepage") is used for simple editing pixel images, [gimp](//www.gimp.org/ "Gimp
Homepage") (without plugins, since they are not needed for me) - for editing and
[inkskape](//www.inkscape.org/ "Inkskape Homepage") is used as editor of vector
graphics.
* **Browser** - I use Firefox. Some Firefox settings are below. Chromium is used
as additional browser, elinks is used as console browser.
* **IM client** is [qutIM](//qutim.org "Qutim Homepage"). It is a
cross-platform, multiprotocol and full featured client.
[Kopete](//kde.org/applications/internet/kopete/ "Kopete Homepage"), which I
used before it, crashes, does not work correctly and does not work normally with
codepage. Also I don't use a console client since I use a tablet IM. And I use
Skype for skype obviously.
* **Mail client** is [kmail](//kde.org/applications/internet/kmail/ "Kmail
Homepage"). It is a full featured client (and I use most of them), looks pretty
and it is easy to use. If it will be DE-undepended it will be better.
* **IRC client** is [konversation](//konversation.kde.org/ "Konversation
Homepage"). It is a simple IRC client. Though as far as I remember qutIM also
supports IRC protocol, I prefre to use a special IRC client.
* **Torrent client** is [transmission](//www.transmissionbt.com/ "Transmission
Homepage") with Qt5 interface (it has gtk interface too). It is also used for
server but without GUI.
* **Video player** is [mpv](//mpv.io/ "Mpv Homepage"), since mplayer died and
mplayer2 was born deadborn. Graphical frontend are not needed.
* **Audio player** is [qmmp](//qmmp.ylsoftware.com/ "Qmmp Homepage"). It is a
good winamp-like player. Flick of the wrist you may make a handy interface for
it (simpleui).
* **Audio/video editors**:
[kdenlive](//kde-apps.org/content/show.php?content=29024 "Kdenlive Homepage") is
used as video editor,
[soundkonverter](//kde-apps.org/content/show.php?content=29024) is used as audio
editor, [easytag](//wiki.gnome.org/Apps/EasyTAG "Easytag Homepage") is used for
editing audio tags (unfortunately, it is a gtk-based, but I didn't find a better
tool for it). And command line and scripts written on bash are used too.
* **Office**: [Kingsoft Office](//wps-community.org/ "KO Homepage") is used as
alternative of Microsoft Office; it has no any feature, but it looks normally,
it is qt-based and it is said that it has a good support for standart formats.
(Linux version has an alfa stage.) [Kile](//kile.sourceforge.net/ "Kile
Homepage") is used as LaTeX frontend.
[Okular](//kde.org/applications/graphics/okular/ "Okular Homepage") is used as
document viewer. And I use [GoldenDict](//goldendict.org/ "GoldenDict Homepage")
as dictionary.
* **Editors**: [kwrite](//www.kde.org/applications/utilities/kwrite/ "Kwrite
Homepage") is used as a simple text editor,
[kate](//www.kde.org/applications/utilities/kate/ "Kate Homepage") (and
[cpp-helper](//zaufi.github.io/kate-cpp-helper-plugin.html "Plugin Homepage")
plugin) is used as advanced text editor. And of course I use vim in console.
* **Scientific soft**. Chemical visualizers are
[vmd](//www.ks.uiuc.edu/Research/vmd/ "VMD Homepage"),
[chimera](//www.cgl.ucsf.edu/chimera/ "Chimera Homepage") and
[pymol](//pymol.org/ "Pymol Homepage"). Physics simulator is
[step](//kde.org/applications/education/step/ "Step Homepage"). Calculator is
[kalgebra](//kde.org/applications/education/kalgebra/ "Kalgebra Homepage") and
console [ipython](//ipython.org/ "ipython Homepage"). [Qtiplot](//qtiplot.com/
"Qtiplot Homepage") is used for drawing graphs and data analysis (scidavis,
which is its fork, unfortunately, is half-dead),
[grace](//plasma-gate.weizmann.ac.il/Grace/ "Grace Homepage") is used for only
drawing graphs.
[Chemtool](//ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html
"Chemtool Homepage") is used as alternative of ChemDraw.
* **System applications**. File manager is
[dolphin](//kde.org/applications/system/dolphin/ "Dolphin Homepage"),
[doublecmd](//doublecmd.sourceforge.net/ "Doublecmd Homepage") is used as
twin-panel manager. Terminal emulators are [yakuake](//yakuake.kde.org/ "Yakuake
Homepage") and [urxvt](//software.schmorp.de/pkg/rxvt-unicode.html "Urxvt
Homepage") (as windowed emulator). Archiver graphical interface is
[ark](//kde.org/applications/utilities/ark/ "Ark Homepage").
## <a href="#kde" class="anchor" id="kde"><span class="octicon octicon-link"></span></a>KDE settings
@ -37,11 +99,26 @@ Here is a short paper devoted to the set of applications and extensions that I u
{% include prj_scr.html %}
</div>
QtCurve is used as Qt style, its settings may be found [here](//github.com/arcan1s/dotfiles/tree/master/qtcurve "GitHub"), window decorations are presented by QtCurve too. Cursor theme is [ecliz-small](//kde-look.org/content/show.php/Ecliz?content=110340 "Cursor Homepage"). Plasma theme is [volatile](//kde-look.org/content/show.php/Volatile?content=128110 "Theme Homepage"). Icon pack is [compass](//nitrux.in/ "Nitrux Homepage"). I use fonts which are based on Liberation.
QtCurve is used as Qt style, its settings may be found
[here](//github.com/arcan1s/dotfiles/tree/master/qtcurve "GitHub"), window
decorations are presented by QtCurve too. Cursor theme is
[ecliz-small](//kde-look.org/content/show.php/Ecliz?content=110340 "Cursor
Homepage"). Plasma theme is
[volatile](//kde-look.org/content/show.php/Volatile?content=128110 "Theme
Homepage"). Icon pack is [compass](//nitrux.in/ "Nitrux Homepage"). I use fonts
which are based on Liberation.
**Used widgets** (from left to right, top to bottom) are: [menubar](//launchpad.net/plasma-widget-menubar "Widget Homepage"), [homerun](//userbase.kde.org/Homerun "Widget Homepage") with transparent icon, [icontask](//kde-apps.org/content/show.php?content=144808 "Widget Homepage"), [netctl](/projects/netctl-gui/ "Widget Homepage"), default KDE tray, [colibri](//agateau.com/projects/colibri/ "Widget Homepage") for notifications, [Awesome Widgets](/projects/awesome-widgets "Widget Homepage").
**Used widgets** (from left to right, top to bottom) are:
[menubar](//launchpad.net/plasma-widget-menubar "Widget Homepage"),
[homerun](//userbase.kde.org/Homerun "Widget Homepage") with transparent icon,
[icontask](//kde-apps.org/content/show.php?content=144808 "Widget Homepage"),
[netctl](/projects/netctl-gui/ "Widget Homepage"), default KDE tray,
[colibri](//agateau.com/projects/colibri/ "Widget Homepage") for notifications,
[Awesome Widgets](/projects/awesome-widgets "Widget Homepage").
As a bonus material [here](//github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.colorscheme "GitHub") is a settings for konsole bright colors.
As a bonus material
[here](//github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.
colorscheme "GitHub") is a settings for konsole bright colors.
<div class="thumbnails">
{% assign scrdesc = "Zsh demonstation" %}
@ -58,18 +135,21 @@ I do not use a special settings, thus I get you a list of used add-ons:
* **Auto Refresh** is used for auto update pages.
* **Clone tab** adds "Clone tab" function.
* **Close tab by double click**.
* **New scrollbars** is used for customizing scrollbars, because original ones look horrible in Qt environment.
* **New scrollbars** is used for customizing scrollbars, because original ones
look horrible in Qt environment.
* **NoScript** is used for I2P and Tor, for example.
* **PrivateTab** adds private tab (not the window).
* **Proxy Selector** adds an ability to use multiple proxies.
* **QuickJava** is used with the same goal as NoScript.
* **RSS icon in url bar**.
* **Dictionaries for spellchecking** (eng/rus).
* **Space Next**. If I tap a space at the bottom of a page, it will be perceived as pushing the "Next" button.
* **Space Next**. If I tap a space at the bottom of a page, it will be perceived
as pushing the "Next" button.
* **Speed Dial** is a simple express panel.
* **Status-4-Evar** is a normal status bar.
* **tab delabelifier** minimizes inactive tabs.
* **Tab Scope + Tab Scope Tweaker** is tab tooltip.
* **accessKey** does not work now. But it is needed for easy navigation from keyboard (opera-like).
* **accessKey** does not work now. But it is needed for easy navigation from
keyboard (opera-like).
* **FXOpera** is a normal minimalistic appearance.

View File

@ -13,17 +13,28 @@ Paper, which describes how to remove the dependency on baloo in your system.
## <a href="#disclaimer" class="anchor" id="disclaimer"><span class="octicon octicon-link"></span></a>Disclaimer
I do not use this patch, since I prefer less destructive methods. However, apparently all works fine, because there is no any claims. Since this patch was created in a few minutes, it removes all baloo's calls from source files (maybe I'll create a normal patch sometime).
I do not use this patch, since I prefer less destructive methods. However,
apparently all works fine, because there is no any claims. Since this patch was
created in a few minutes, it removes all baloo's calls from source files (maybe
I'll create a normal patch sometime).
On other hand, I highly recommend to people, who do not use baloo for some reason, disable it from the settings menu (it was added it 4.13.1) or read this [article](//blog.andreascarpino.it/disabling-baloo-the-arch-way/ "Scarpino's blog").
On other hand, I highly recommend to people, who do not use baloo for some
reason, disable it from the settings menu (it was added it 4.13.1) or read this
[article](//blog.andreascarpino.it/disabling-baloo-the-arch-way/ "Scarpino's
blog").
## <a href="#intro" class="anchor" id="intro"><span class="octicon octicon-link"></span></a>Introduction
In Archlinux **gwenview** and **kdepim** (and **baloo-widgets**) depend on baloo currently (2014-05-18). In the version 4.13.0 **kactivities** depends on baloo too (and I don't know why); but this dependency was not required explicitly, so it was enough just to rebuild the package by removing baloo from the list of dependencies.
In Archlinux **gwenview** and **kdepim** (and **baloo-widgets**) depend on baloo
currently (2014-05-18). In the version 4.13.0 **kactivities** depends on baloo
too (and I don't know why); but this dependency was not required explicitly, so
it was enough just to rebuild the package by removing baloo from the list of
dependencies.
## <a href="#gwenview" class="anchor" id="gwenview"><span class="octicon octicon-link"></span></a>gwenview
It's all quite simple. Developers have taken care of the wishes of ordinary users and added a special flag:
It's all quite simple. Developers have taken care of the wishes of ordinary
users and added a special flag:
```cmake
//Semantic info backend for Gwenview (Baloo/Fake/None)
@ -42,8 +53,14 @@ cmake ../gwenview-${pkgver} \
## <a href="#kdepim" class="anchor" id="kdepim"><span class="octicon octicon-link"></span></a>kdepim
Since everything was done in a hurry, I prefer to look at the source code using grep and to find all references to baloo. Needed strings (they are links to ballo in CMakeLists.txt, baloo's function calls and header declarations) were commented (I added some fake calls to the source code). You may find the patch [here](//gist.github.com/arcan1s/b698bb586faef627b3bb "Gist") (4.13.3). Download the patch, apply it to the source code and recompile kdepim.
Since everything was done in a hurry, I prefer to look at the source code using
grep and to find all references to baloo. Needed strings (they are links to
ballo in CMakeLists.txt, baloo's function calls and header declarations) were
commented (I added some fake calls to the source code). You may find the patch
[here](//gist.github.com/arcan1s/b698bb586faef627b3bb "Gist") (4.13.3). Download
the patch, apply it to the source code and recompile kdepim.
## <a href="#packages" class="anchor" id="packages"><span class="octicon octicon-link"></span></a>Packages
All Archlinux packages for both architectures may be found in [my repository](//wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo "ArchWiki").
All Archlinux packages for both architectures may be found in [my
repository](//wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo "ArchWiki").

View File

@ -7,19 +7,26 @@ tags: linux, development
title: Writting own Shell completions. Zsh
short: writting-own-completions-p1
---
<figure class="img">![bash_completion](/resources/papers/zsh_completion.png)</figure> Some basics of creating a completion files for own application are described in these articles.
<figure class="img">![bash_completion](/resources/papers/zsh_completion.png)</figure>Some
basics of creating a completion files for own application are described in these
articles.
<!--more-->
## <a href="#preamble" class="anchor" id="preamble"><span class="octicon octicon-link"></span></a>Preamble
While developing [one of my projects](/ru/projects/netctl-gui "Netctl-gui project page") I have wanted to add completion files. I have already tried to create these files, but I was too lazy to read some manuals about it.
While developing [one of my projects](/ru/projects/netctl-gui "Netctl-gui
project page") I have wanted to add completion files. I have already tried to
create these files, but I was too lazy to read some manuals about it.
## <a href="#introduction" class="anchor" id="introduction"><span class="octicon octicon-link"></span></a>Introduction
There are some possible ways to create zsh completion file. In this article I will describe only one of them, which provides a lot of opportunities, but does not require a lot of costs (such as regular expressions).
There are some possible ways to create zsh completion file. In this article I
will describe only one of them, which provides a lot of opportunities, but does
not require a lot of costs (such as regular expressions).
Lets consider the example of my application, which has a part of help message that looks like this:
Lets consider the example of my application, which has a part of help message
that looks like this:
```bash
netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
@ -30,19 +37,27 @@ Here is a flag list:
* flags `-h` and `--help` do not require any arguments;
* flags `-e` and `--essid` require a string argument without completion;
* flags `-c` and `--config` require a string argument, which is a file;
* flags `-o` and `--open` require a string argument, there is a completion from files in the specified directory;
* flags `-t` and `--tab` require a string argument, there is a completion from the specified array;
* flag `--set-opts` requires a string argument, there is a completion from the specified array comma separated;
* flags `-o` and `--open` require a string argument, there is a completion from
files in the specified directory;
* flags `-t` and `--tab` require a string argument, there is a completion from
the specified array;
* flag `--set-opts` requires a string argument, there is a completion from the
specified array comma separated;
## <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>The file pattern
It must be specified in the header that it is a completion file and application for which it will complete (may be string if this file provides completions for several applications):
It must be specified in the header that it is a completion file and application
for which it will complete (may be string if this file provides completions for
several applications):
```bash
#compdef netctl-gui
```
Next there is flags, additional functions and variables declarations. It should be noted that all functions and variables, which will be used for completions, **should return arrays**. In my case this scheme looks like this (I left empty these functions in this chapter):
Next there is flags, additional functions and variables declarations. It should
be noted that all functions and variables, which will be used for completions,
**should return arrays**. In my case this scheme looks like this (I left empty
these functions in this chapter):
```bash
# variables
@ -52,14 +67,17 @@ _netctl_gui_tabs=()
_netctl_profiles() {}
```
Then there are main functions, which will be called for completion of specific application. In my case this there is only one applications, so there is only one function:
Then there are main functions, which will be called for completion of specific
application. In my case this there is only one applications, so there is only
one function:
```bash
# work block
_netctl-gui() {}
```
And finally **without isolation in a separate function** there is a small shamanism, which declares a dependence "application-function":
And finally **without isolation in a separate function** there is a small
shamanism, which declares a dependence "application-function":
```bash
case "$service" in
@ -71,7 +89,19 @@ esac
## <a href="#flags" class="anchor" id="flags"><span class="octicon octicon-link"></span></a>Flags
As it was said above, there are some different ways to create these files. In particular they differ in the flag declaration and their further processing. In my case I will use `_arguments` command, which require a specific format of variables: `FLAG[description]:MESSAGE:ACTION`. The last two fields are not required and, as you will see below, are not needed in some cases. If you want to add two flags for an action (short and long format), then the format is a little bit complicated: `{(FLAG_2)FLAG_1,(FLAG_1)FLAG_2}[description]:MESSAGE:ACTION`. It should be noted that if you want to create completions for two flags but some flags have not a second format. you will should to add following line: `{FLAG,FLAG}[description]:MESSAGE:ACTION`. `MESSAGE` is a message which will be shown, `ACTION` is an action which will be performed after this flag. In this tutorial `ACTION` will be following: `->STATE`.
As it was said above, there are some different ways to create these files. In
particular they differ in the flag declaration and their further processing. In
my case I will use `_arguments` command, which require a specific format of
variables: `FLAG[description]:MESSAGE:ACTION`. The last two fields are not
required and, as you will see below, are not needed in some cases. If you want
to add two flags for an action (short and long format), then the format is a
little bit complicated:
`{(FLAG_2)FLAG_1,(FLAG_1)FLAG_2}[description]:MESSAGE:ACTION`. It should be
noted that if you want to create completions for two flags but some flags have
not a second format. you will should to add following line:
`{FLAG,FLAG}[description]:MESSAGE:ACTION`. `MESSAGE` is a message which will be
shown, `ACTION` is an action which will be performed after this flag. In this
tutorial `ACTION` will be following: `->STATE`.
So, according to our requirements, flags declaration will be following:
@ -102,7 +132,9 @@ _netctl_gui_tabs=(
)
```
And there is a dynamic array, which should be generated each time. In my case it is a list of files in the specified directory (by the way it may be done by means of zsh):
And there is a dynamic array, which should be generated each time. In my case it
is a list of files in the specified directory (by the way it may be done by
means of zsh):
```bash
_netctl_profiles() {
@ -112,7 +144,10 @@ _netctl_profiles() {
## <a href="#body" class="anchor" id="body"><span class="octicon octicon-link"></span></a>Function
Remember, there was something about a state above? It is stored in the variable `$state` and in this function we will check what it is to choose the appropriate action. At the beginning of the function we should call `_arguments` with our flags.
Remember, there was something about a state above? It is stored in the variable
`$state` and in this function we will check what it is to choose the appropriate
action. At the beginning of the function we should call `_arguments` with our
flags.
```bash
_netctl-gui() {
@ -146,6 +181,13 @@ _netctl-gui() {
## <a href="#conclusion" class="anchor" id="conclusion"><span class="octicon octicon-link"></span></a>Conclusion
File should be places to `/usr/share/zsh/site-functions/` with any name (it is recommended to set prefix to `_`). You may found the example [in my repository](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/zsh-completions "File").
File should be places to `/usr/share/zsh/site-functions/` with any name (it is
recommended to set prefix to `_`). You may found the example [in my
repository](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/zsh-completions
"File").
The additional information may be found in [zsh-completions](//github.com/zsh-users/zsh-completions "GitHub") repository. For example there is this [How-To](//github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org "Tutorial"). And also there are a lot of examples.
The additional information may be found in
[zsh-completions](//github.com/zsh-users/zsh-completions "GitHub") repository.
For example there is this
[How-To](//github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org
"Tutorial"). And also there are a lot of examples.

View File

@ -7,19 +7,27 @@ tags: linux, development
title: Writting own Shell completions. Bash
short: writting-own-completions-p2
---
<figure class="img">![bash_completion](/resources/papers/bash_completion.png)</figure> Some basics of creating a completion files for own application are described in these articles.
<figure class="img">![bash_completion](/resources/papers/bash_completion.png)</figure>Some
basics of creating a completion files for own application are described in these
articles.
<!--more-->
## <a href="#preamble" class="anchor" id="preamble"><span class="octicon octicon-link"></span></a>Preamble
While developing [one of my projects](/ru/projects/netctl-gui "Netctl-gui project page") I have wanted to add completion files. I have already tried to create these files, but I was too lazy to read some manuals about it.
While developing [one of my projects](/ru/projects/netctl-gui "Netctl-gui
project page") I have wanted to add completion files. I have already tried to
create these files, but I was too lazy to read some manuals about it.
## <a href="#introduction" class="anchor" id="introduction"><span class="octicon octicon-link"></span></a>Introduction
Bash, [unlike zsh](/ru/2014/07/17/writting-own-completions-p1 "Zsh completions paper"), demands some dirty workarounds for completions. Cursory have Googled, I have not found a more or less normal tutorials, so it is based on the available `pacman` completion files in my system.
Bash, [unlike zsh](/ru/2014/07/17/writting-own-completions-p1 "Zsh completions
paper"), demands some dirty workarounds for completions. Cursory have Googled, I
have not found a more or less normal tutorials, so it is based on the available
`pacman` completion files in my system.
Lets consider the example of the same my application. I remind you that a part of help message is as follows:
Lets consider the example of the same my application. I remind you that a part
of help message is as follows:
```bash
netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
@ -36,7 +44,10 @@ Here is a flag list:
## <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>The file pattern
Here **all** variables must return an array. And there no specific formats. First we declare the flags and then we describe all other variables. As I am not going to describe the functions in more detail below I remind you that `_netctl_profiles()` should be generated each time:
Here **all** variables must return an array. And there no specific formats.
First we declare the flags and then we describe all other variables. As I am not
going to describe the functions in more detail below I remind you that
`_netctl_profiles()` should be generated each time:
```bash
# variables
@ -46,14 +57,17 @@ _netctl_gui_tabs=()
_netctl_profiles() {}
```
Then there are main functions, which will be called for completion of specific application. In my case this there is only one applications, so there is only one function:
Then there are main functions, which will be called for completion of specific
application. In my case this there is only one applications, so there is only
one function:
```bash
# work block
_netctl-gui() {}
```
And finally again **without isolation in a separate function** we create a dependence "function-application":
And finally again **without isolation in a separate function** we create a
dependence "function-application":
```bash
complete -F _netctl_gui netctl-gui
@ -61,7 +75,8 @@ complete -F _netctl_gui netctl-gui
## <a href="#flags" class="anchor" id="flags"><span class="octicon octicon-link"></span></a>Flags
As it was said above there is no specific format, so all available flags declare by array:
As it was said above there is no specific format, so all available flags declare
by array:
```bash
_netctl_gui_arglist=(
@ -99,7 +114,13 @@ _netctl_profiles() {
## <a href="#body" class="anchor" id="body"><span class="octicon octicon-link"></span></a>Function
The variable `COMPREPLY` responds for completion in Bash. To keep track of the current state function `_get_comp_words_by_ref` must be called with parameters `cur` (current flag) and `prev` (previous flag, it is the state). Also some point for case are needed (variables `want*`). Function `compgen` is used for completion generation. A list of words is given after flag `-W`. (Also there is flag `-F` which requires a function as argument, but it gives warning for me.) The last argument is a current string to which you want to generate completion.
The variable `COMPREPLY` responds for completion in Bash. To keep track of the
current state function `_get_comp_words_by_ref` must be called with parameters
`cur` (current flag) and `prev` (previous flag, it is the state). Also some
point for case are needed (variables `want*`). Function `compgen` is used for
completion generation. A list of words is given after flag `-W`. (Also there is
flag `-F` which requires a function as argument, but it gives warning for me.)
The last argument is a current string to which you want to generate completion.
So, here is our function:
@ -140,4 +161,7 @@ _netctl_gui() {
## <a href="#conclusion" class="anchor" id="conclusion"><span class="octicon octicon-link"></span></a>Conclusion
File should be places to `/usr/share/bash-completion/completions/` with any name. You may found the example [in my repository](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/bash-completions "File").
File should be places to `/usr/share/bash-completion/completions/` with any
name. You may found the example [in my
repository](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/bash-completions
"File").

View File

@ -7,7 +7,10 @@ tags: awesome-widgets, pytextmonitor
title: Migration Awesome Widgets (ex-PyTextMonitor) to version 2.0
short: migration-to-v2
---
<figure class="img">![broken-computer](/resources/papers/broken-computer.jpg)</figure>Some significant changes occur in the version 2.0 (really, I didn't do anything which can break your desktop!) and user API was rewritten. This paper should help to migrate from older PyTextMonitor versions (<1.11.0) to new one (>2.0).
<figure class="img">![broken-computer](/resources/papers/broken-computer.jpg)</figure> Some
significant changes occur in the version 2.0 (really, I didn't do anything
which can break your desktop!) and user API was rewritten. This paper should
help to migrate from older PyTextMonitor versions (<1.11.0) to new one (>2.0).
<!--more-->
@ -15,18 +18,27 @@ short: migration-to-v2
Firstly, a series of new features, including:
* New widget - **Desktop panel**. It shows desktop list and select the active one. It can switch to the selected desktop by mouse clicking. Also it may set selected panels hidden.
* New tags - `hddfreemb`, `hddfreegb`, `memusedmb`, `memusedgb`, `memfreemb`, `memfreegb`, `swapfreemb`, `swapfreegb`. And there are new tags related to new features - `desktop`, `ndesktop`, `tdesktops`.
* New graphical tooltip - battery. It is twin colour (the colour depends on AC status).
* New widget - **Desktop panel**. It shows desktop list and select the active
one. It can switch to the selected desktop by mouse clicking. Also it may set
selected panels hidden.
* New tags - `hddfreemb`, `hddfreegb`, `memusedmb`, `memusedgb`, `memfreemb`,
`memfreegb`, `swapfreemb`, `swapfreegb`. And there are new tags related to new
features - `desktop`, `ndesktop`, `tdesktops`.
* New graphical tooltip - battery. It is twin colour (the colour depends on AC
status).
## <a href="#changes" class="anchor" id="changes"><span class="octicon octicon-link"></span></a>Significant changes
Secondly, there are some changes because of which the old settings **will not** more work. They are:
Secondly, there are some changes because of which the old settings **will not**
more work. They are:
* The main widget was rewritten to `С++`, so the project was renamed to **Awesome Widgets**, and the main widget was done to **Awesome Widget**
* The main widget was rewritten to `С++`, so the project was renamed to
**Awesome Widgets**, and the main widget was done to **Awesome Widget**
* Configuration of battery and AC files **was moved to DataEngine**.
* **The labels was removed**. Now the widget is a single label. You may set up text in the special browser.
* According to removal of the label, tooltip **should be configured separately**.
* **The labels was removed**. Now the widget is a single label. You may set up
text in the special browser.
* According to removal of the label, tooltip **should be configured
separately**.
* Align of text now can be configured only by using HTML tags.
* According to fields combining several tags were renamed:
* `custom` (time) -> `ctime`

View File

@ -7,7 +7,9 @@ tags: linux, systemd, ecryptfs
title: How to encrypt home directory. For dummies
short: ecnryption-home-directory
---
<figure class="img">![single-door](/resources/papers/single-door.jpg)</figure>This paper is about encryption home directory using ecryptfs and automount settins using systemd and key on flash card.
<figure class="img">![single-door](/resources/papers/single-door.jpg)</figure>This
paper is about encryption home directory using ecryptfs and automount settins
using systemd and key on flash card.
<!--more-->
@ -26,7 +28,9 @@ short: ecnryption-home-directory
## <a href="#step1" class="anchor" id="step1"><span class="octicon octicon-link"></span></a>Step 1: Encryption
The widespread solution in the Internet is to use automatic utilities to do it. However in our case they are not suitable, since we need to import key / password signature, which is not possible in this case.
The widespread solution in the Internet is to use automatic utilities to do it.
However in our case they are not suitable, since we need to import key /
password signature, which is not possible in this case.
The encryption can be done by the following command (lol):
@ -34,8 +38,10 @@ The encryption can be done by the following command (lol):
mount -t ecryptfs /home/$USER /home/$USER
```
While process it asks some question (I suggest to do first mounting in the interactive mode). The answers may be like following (see the comments),
please note that if you change something, it will be changed in some lines below too:
While process it asks some question (I suggest to do first mounting in the
interactive mode). The answers may be like following (see the comments),
please note that if you change something, it will be changed in some lines below
too:
```bash
# key or certificate. The second one is more reliable while you don't lose it %)
@ -94,25 +100,31 @@ cp -a /home/$USER-org/. /home/$USER
## <a href="#step2" class="anchor" id="step2"><span class="octicon octicon-link"></span></a>Step 2: systemd automounting
Create file on flash card (I've used microSD) with the following text (you should insert your password):
Create file on flash card (I've used microSD) with the following text (you
should insert your password):
```bash
passphrase_passwd=someverystronguniqpassword
```
Add card automount (mount point is `/mnt/key`) to `fstab` with option `ro`, for example:
Add card automount (mount point is `/mnt/key`) to `fstab` with option `ro`, for
example:
```bash
UUID=dc3ecb41-bc40-400a-b6bf-65c5beeb01d7 /mnt/key ext2 ro,defaults 0 0
UUID=dc3ecb41-bc40-400a-b6bf-65c5beeb01d7 /mnt/key ext2 ro,defaults 0 0
```
Let's configure home directory mounting. The mount options can be found in the following output:
Let's configure home directory mounting. The mount options can be found in the
following output:
```bash
mount | grep ecryptfs
```
I should note that there are not all options there, you need add `key`, `no_sig_cache`, `ecryptfs_passthrough` too. Thus systemd mount-unit should be like the following (if you are systemd-hater you can write the own daemon, because it doesn't work over `fstab` without modification (see below)).
I should note that there are not all options there, you need add `key`,
`no_sig_cache`, `ecryptfs_passthrough` too. Thus systemd mount-unit should be
like the following (if you are systemd-hater you can write the own daemon,
because it doesn't work over `fstab` without modification (see below)).
```bash
# cat /etc/systemd/system/home-$USER.mount
@ -130,7 +142,9 @@ Options=rw,nosuid,nodev,relatime,key=passphrase:passphrase_passwd_file=/mnt/key/
WantedBy=local-fs.target
```
`XXXXX` should be replaced to signature from options with which directory are currently mounting. Also you need to insert user name and edit path to file with password (and unit name) if it is needed. Autoload:
`XXXXX` should be replaced to signature from options with which directory are
currently mounting. Also you need to insert user name and edit path to file with
password (and unit name) if it is needed. Autoload:
```bash
systemctl enable home-$USER.mount
@ -159,17 +173,22 @@ Enable:
systemctl enable umount-key.service
```
Reboot. Remove backups if all is ok. If not then you did a mistake, resurrect system from emergency mode.
Reboot. Remove backups if all is ok. If not then you did a mistake, resurrect
system from emergency mode.
## <a href="#whynotfstab" class="anchor" id="whynotfstab"><span class="octicon octicon-link"></span></a>Why not fstab?
In my case I could not to make flash mounting before home decryption. Thus I saw emergency mode on load in which I should just continue loading. There are two solutions in the Internet:
In my case I could not to make flash mounting before home decryption. Thus I saw
emergency mode on load in which I should just continue loading. There are two
solutions in the Internet:
* Create entry with noauto option and then mount using the special command in `rc.local`.
* Create entry with noauto option and then mount using the special command in
`rc.local`.
* Create entry with nofail option and then remount all partitions in `rc.local`.
In my opinion both of them are workarounds too much.
## <a href="#whynotpam" class="anchor" id="whynotpam"><span class="octicon octicon-link"></span></a>Why not pam?
Other solution is to mount using pam entry. In my case I have authentication without password on fingerprint so it doesn't work for me.
Other solution is to mount using pam entry. In my case I have authentication
without password on fingerprint so it doesn't work for me.

View File

@ -7,17 +7,25 @@ tags: awesome-widgets, pytextmonitor
title: Awesome Widgets - bells and whistles
short: aw-v21-bells-and-whistles
---
The paper deals with settings of a custom scripts and graphical bars in the new version of Awesome Widgets (2.1).
The paper deals with settings of a custom scripts and graphical bars in the new
version of Awesome Widgets (2.1).
<!--more-->
## <a href="#intro" class="anchor" id="intro"><span class="octicon octicon-link"></span></a>Introduction
For a start it is highly recommended copy file `$HOME/.kde4/share/config/extsysmon.conf` after widget update before you open widget settings, because old and new script settings are incompatible. Also I should note that these features can be configured from graphical interface, but I will describe how it can be done by simply editing the desktop file.
For a start it is highly recommended copy file `$HOME/.kde4/share/config/extsysmon.conf`
after widget update before you open widget settings, because old and new script
settings are incompatible. Also I should note that these features can be
configured from graphical interface, but I will describe how it can be done by
simply editing the desktop file.
## <a href="#general" class="anchor" id="general"><span class="octicon octicon-link"></span></a>General
Items are stored in the two directories: `/usr/share/awesomewidgets/%TYPE%/` and `$HOME/.local/share/awesomewidgets/%TYPE%/` (path may be differ in depend from your distro). Settings in the home directory have a higher priority that global ones.
Items are stored in the two directories: `/usr/share/awesomewidgets/%TYPE%/` and
`$HOME/.local/share/awesomewidgets/%TYPE%/` (path may be differ in depend from
your distro). Settings in the home directory have a higher priority that global
ones.
## <a href="#bars" class="anchor" id="bars"><span class="octicon octicon-link"></span></a>Bars
@ -82,7 +90,9 @@ Directory is `upgrade`, configuration files have the following fields:
## <a href="#weather" class="anchor" id="weather"><span class="octicon octicon-link"></span></a>Weather
The weather uses data and API from [OpenWeatherMap](//openweathermap.org/ "OpenWeatherMap site"). Directory is `weather`, configuration files have the following fields:
The weather uses data and API from [OpenWeatherMap](//openweathermap.org/
"OpenWeatherMap site"). Directory is `weather`, configuration files have the
following fields:
| Field | Required | Value | Default |
|-------|----------|-------|---------|

View File

@ -7,7 +7,8 @@ tags: development, c++, cmake
title: Add cppcheck and clang-format for a cmake project
short: cppcheck-and-clang-format
---
A small How-To which describes how to add automatic code style checking and static analyser to a project on `C++` which uses `cmake` as a build system.
A small How-To which describes how to add automatic code style checking and
static analyser to a project on `C++` which uses `cmake` as a build system.
<!--more-->
@ -23,27 +24,45 @@ sources/
|- second_component/
```
**3rdparty** is a directory which contains additional libraries and which should be excluded from checking (`PROJECT_TRDPARTY_DIR` cmake variable is used to indicate path to this directory). Also let's assume that we have additional files (e.g. `*.qml`) in addition to common source files (`*.cpp`, `*.h`).
**3rdparty** is a directory which contains additional libraries and which should
be excluded from checking (`PROJECT_TRDPARTY_DIR` cmake variable is used to
indicate path to this directory). Also let's assume that we have additional
files (e.g. `*.qml`) in addition to common source files (`*.cpp`, `*.h`).
In addition the described below commands may be inserted to pre-commit hook; it allows us to troll colleagues which will be able to commit nothing till they read `CONTRIBUTING.md`.
In addition the described below commands may be inserted to pre-commit hook; it
allows us to troll colleagues which will be able to commit nothing till they
read `CONTRIBUTING.md`.
## <a href="#cppcheck" class="anchor" id="cppcheck"><span class="octicon octicon-link"></span></a>cppcheck
As far as there are no good (out-of-box) static analysers in open source we will use it. Knowledgeable people say that [cppcheck](//cppcheck.sourceforge.net/ "cppcheck site") in case of good configuration it is better than the any alternative, but its configuration is the same that the new project creation. `cppcheck` shows obvious errors and recommend to fix them.
As far as there are no good (out-of-box) static analysers in open source we will
use it. Knowledgeable people say that [cppcheck](//cppcheck.sourceforge.net/
"cppcheck site") in case of good configuration it is better than the any
alternative, but its configuration is the same that the new project creation.
`cppcheck` shows obvious errors and recommend to fix them.
### <a href="#cppcheck-run" class="anchor" id="cppcheck-run"><span class="octicon octicon-link"></span></a>Example of run
Here it is:
```bash
cppcheck --enable=warning,performance,portability,information,missingInclude --std=c++11 --library=qt.cfg --template="[{severity}][{id}] {message} {callstack} (On {file}:{line})" --verbose --quiet path/to/source/files/or/directory
cppcheck --enable=warning,performance,portability,information,missingInclude
--std=c++11 --library=qt.cfg --template="[{severity}][{id}] {message}
{callstack} (On {file}:{line})" --verbose --quiet
path/to/source/files/or/directory
```
* `--enable` says which notifications should be enabled. I've disabled `style` (we will use `clang-format` to do it), `unusedFunction` which shows false-positive for some methods.
* `--enable` says which notifications should be enabled. I've disabled `style`
(we will use `clang-format` to do it), `unusedFunction` which shows
false-positive for some methods.
* `--std` says which standard should be used.
* `--library=qt.cfg` a configuration file, which describes how to check files. The developers recommend to read the following [manual](//cppcheck.sourceforge.net/manual.pdf "cppcheck manual"). I've used the ready template from `/usr/share/cppcheck/cfg/`.
* `--library=qt.cfg` a configuration file, which describes how to check files.
The developers recommend to read the following
[manual](//cppcheck.sourceforge.net/manual.pdf "cppcheck manual"). I've used the
ready template from `/usr/share/cppcheck/cfg/`.
* `--template` is notification template.
* `---verbose --quiet` are two "conflicting" options. The first one enables more verbose messages, the second one disables progress reports.
* `---verbose --quiet` are two "conflicting" options. The first one enables more
verbose messages, the second one disables progress reports.
### <a href="#cppcheck-cmake" class="anchor" id="cppcheck-cmake"><span class="octicon octicon-link"></span></a>cmake integration
@ -75,7 +94,10 @@ add_custom_target(
)
```
`cppcheck` may work with directories recursive, but I need to skip qml-files checking in my example, because this `cppcheck` will segfault on some of them. To do it source files search is used followed by the ejection of unnecessary files.
`cppcheck` may work with directories recursive, but I need to skip qml-files
checking in my example, because this `cppcheck` will segfault on some of them.
To do it source files search is used followed by the ejection of unnecessary
files.
Include to the project (`CMakeLists.txt`)...
@ -95,11 +117,16 @@ Then edit files to avoid warnings in the future.
### <a href="#cppcheck-adds" class="anchor" id="cppcheck-adds"><span class="octicon octicon-link"></span></a>Adds
* You may add own directories to includes search, using `-I dir` option
* You may drop files and/or directories from checking by using `-i path/to/file/or/directory` option.
* You may drop files and/or directories from checking by using `-i
path/to/file/or/directory` option.
## <a href="#clang" class="anchor" id="clang"><span class="octicon octicon-link"></span></a>clang-format
[clang-format](//clang.llvm.org/docs/ClangFormat.html "clang-format site") is used to automatic code style checking and correction. [astyle](//astyle.sourceforge.net/ "astyle site"), which has a very modest capabilities, and [uncrustify](//uncrustify.sourceforge.net/ "uncrustify site"), which on the contrary has too many options, should be mentioned from analogues.
[clang-format](//clang.llvm.org/docs/ClangFormat.html "clang-format site") is
used to automatic code style checking and correction.
[astyle](//astyle.sourceforge.net/ "astyle site"), which has a very modest
capabilities, and [uncrustify](//uncrustify.sourceforge.net/ "uncrustify site"),
which on the contrary has too many options, should be mentioned from analogues.
### <a href="#clang-run" class="anchor" id="clang-run"><span class="octicon octicon-link"></span></a>Example of run
@ -109,7 +136,8 @@ clang-format -i -style=LLVM /path/to/source/files
(Unfortunately it **could not** work with directories recursive.)
* `-i` enables files auto replace (otherwise the result will be printed to stdout).
* `-i` enables files auto replace (otherwise the result will be printed to
stdout).
* `-style` is a style preset selection or from file (`file`), see below.
### <a href="#clang-cmake" class="anchor" id="clang-cmake"><span class="octicon octicon-link"></span></a>cmake integration
@ -137,7 +165,8 @@ add_custom_target(
)
```
There is the same method to get source files list as for `cppcheck`, because `clang-format` doesn't support recursive directory search.
There is the same method to get source files list as for `cppcheck`, because
`clang-format` doesn't support recursive directory search.
Include to the project (`CMakeLists.txt`)...
@ -156,10 +185,16 @@ No other actions required.
### <a href="#clang-adds" class="anchor" id="clang-adds"><span class="octicon octicon-link"></span></a>Adds
* Configuration. You may see all options on the [official site](//clang.llvm.org/docs/ClangFormat.html "clang-format site"). Also you may use [interactive tool](//clangformat.com/ "Site") to search for required options. To use the preset for your style use the following command:
* Configuration. You may see all options on the [official
site](//clang.llvm.org/docs/ClangFormat.html "clang-format site"). Also you may
use [interactive tool](//clangformat.com/ "Site") to search for required
options. To use the preset for your style use the following command:
```bash
clang-format -style=LLVM -dump-config > .clang-format
```
Then edit generated file `.clang-format`. To enable it you need set `-style=file` option, file should be placed to the any parent directory of each source file (e.g., to the project root). Also you may send required options to the command line directly, e.g. `-style="{BasedOnStyle: llvm, IndentWidth: 8}"`
Then edit generated file `.clang-format`. To enable it you need set
`-style=file` option, file should be placed to the any parent directory of each
source file (e.g., to the project root). Also you may send required options to
the command line directly, e.g. `-style="{BasedOnStyle: llvm, IndentWidth: 8}"`

View File

@ -7,5 +7,8 @@ tags: site
title: URL changes
short: url-changes
---
I would like to inform you that I've changed site and repository URL from [arcanis.name](//arcanis.name) to [arcanis.me](//arcanis.me). It was done just because ME domain is more pretty. The old URLs will be still valid till Mar 2016 (date of the domain name registration), but at the moment I've setup URL redirection to the new URL. Sorry for any inconvenience.
I would like to inform you that I've changed site and repository URL from
[arcanis.name](//arcanis.name) to [arcanis.me](//arcanis.me). It was done just
because ME domain is more pretty. The old URLs will be still valid till Mar 2016
(date of the domain name registration), but at the moment I've setup URL
redirection to the new URL. Sorry for any inconvenience.

View File

@ -15,7 +15,8 @@ links:
---
<!-- info block -->
Simple daemon that automatically creates git repository in the given directory and creates commit at the specified time interval.
Simple daemon that automatically creates git repository in the given directory
and creates commit at the specified time interval.
<!--more-->
@ -63,7 +64,8 @@ See "man 1 ctrlconf" for more details
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Instruction
* Download an [archive](//github.com/arcan1s/git-etc/releases "GitHub") with latest version of source files.
* Download an [archive](//github.com/arcan1s/git-etc/releases "GitHub") with
latest version of source files.
* Extract it and install the application:
```bash
@ -106,7 +108,8 @@ If you want to enable daemon autoload run
systemctl enable git-etc
```
But you may change path to configuration file or change parameters. To do it just copy (recommended) the source configuration file to new path
But you may change path to configuration file or change parameters. To do it just
copy (recommended) the source configuration file to new path
```bash
cp /etc/git-etc.conf /new/path/to/file/git-etc.conf
@ -134,7 +137,8 @@ ExecStart=/usr/bin/git-etc -c /new/path/to/file/git-etc.conf
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Configuration
All settings are stored in `/etc/git-etc.conf`. After edit them you must restart daemon
All settings are stored in `/etc/git-etc.conf`. After edit them you must restart
daemon
```bash
systemctl restart git-etc
@ -153,7 +157,13 @@ systemctl restart git-etc
<!-- gui block -->
## <a href="#gui" class="anchor" id="gui"><span class="octicon octicon-link"></span></a>Graphical user interface
Control Config (`ctrlconf`) is GUI for `git-etc` daemon written on `Python2/PyQt4`. This application allows you to view a list of commits and changes in files recorded in commit messages. Also, this application allows you to roll back to a specific commit all files (`git reset --hard`) or individual files (`git diff && git apply`). And you may merge old and new configuration files (used two branches repository - master and experimental). The application may need root privileges. Make sure that `sudo` package is installed.
Control Config (`ctrlconf`) is GUI for `git-etc` daemon written on `Python2/PyQt4`.
This application allows you to view a list of commits and changes in files recorded
in commit messages. Also, this application allows you to roll back to a specific
commit all files (`git reset --hard`) or individual files (`git diff && git apply`).
And you may merge old and new configuration files (used two branches repository -
master and experimental). The application may need root privileges. Make sure that
`sudo` package is installed.
### <a href="#gui_configuration" class="anchor" id="gui_configuration"><span class="octicon octicon-link"></span></a>Configuration

View File

@ -27,11 +27,15 @@ links:
---
<!-- info block -->
A collection of minimalistic easily configurable Plasmoids written on `C++/Qt`. They look like widgets in [Awesome WM](//awesome.naquadah.org/ "Awesome Homepage"). Also this packages has an additional system [DataEngine](//techbase.kde.org/Development/Tutorials/Plasma/DataEngines "Developers tutorial").
A collection of minimalistic easily configurable Plasmoids written on `C++/Qt`.
They look like widgets in [Awesome WM](//awesome.naquadah.org/ "Awesome Homepage").
Also this packages has an additional system [DataEngine]
(//techbase.kde.org/Development/Tutorials/Plasma/DataEngines "Developers tutorial").
<!--more-->
**NOTE:** [LOOKING FOR TRANSLATORS!](//github.com/arcan1s/awesome-widgets/issues/14 "Ticket")
**NOTE:** [LOOKING FOR TRANSLATORS!](//github.com/arcan1s/awesome-widgets/issues/14
"Ticket")
**PLASMA 5 COMPATIBLE!**
@ -55,7 +59,8 @@ A collection of minimalistic easily configurable Plasmoids written on `C++/Qt`.
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Instruction
* Download an [archive](//github.com/arcan1s/awesome-widgets/releases "GitHub") with latest version of source files.
* Download an [archive](//github.com/arcan1s/awesome-widgets/releases "GitHub")
with latest version of source files.
* Extract it and install:
```bash
@ -66,7 +71,8 @@ A collection of minimalistic easily configurable Plasmoids written on `C++/Qt`.
sudo make install
```
**NOTE:** on Plasma 5 it very likely requires `-DKDE_INSTALL_USE_QT_SYS_PATHS=ON` flag
**NOTE:** on Plasma 5 it very likely requires `-DKDE_INSTALL_USE_QT_SYS_PATHS=ON`
flag.
### <a href="#dependencies" class="anchor" id="dependencies"><span class="octicon octicon-link"></span></a>Dependencies
@ -88,7 +94,8 @@ Open your Plasma widgets and select `Awesome Widget`.
### <a href="#tips" class="anchor" id="tips"><span class="octicon octicon-link"></span></a>Tips & tricks
You may use different colours inside. Just put label text into html code. See [issue](//github.com/arcan1s/awesome-widgets/issues/9 "GitHub") for more details.
You may use different colours inside. Just put label text into html code. See
[issue](//github.com/arcan1s/awesome-widgets/issues/9 "GitHub") for more details.
<!-- end of howto block -->
@ -97,7 +104,9 @@ You may use different colours inside. Just put label text into html code. See [i
### <a href="#deconf" class="anchor" id="deconf"><span class="octicon octicon-link"></span></a>DataEngine configuration
You may edit DataEngine configuration. It is `/etc/xdg/plasma-dataengine-extsysmon.conf` and `$HOME/.config/plasma-dataengine-extsysmon.conf`. Uncomment needed line and edit it.
You may edit DataEngine configuration. It is `/etc/xdg/plasma-dataengine-extsysmon.conf`
and `$HOME/.config/plasma-dataengine-extsysmon.conf`. Uncomment needed line and
edit it.
#### <a href="#deoptions" class="anchor" id="deoptions"><span class="octicon octicon-link"></span></a>DataEngine options
@ -114,7 +123,8 @@ You may edit DataEngine configuration. It is `/etc/xdg/plasma-dataengine-extsysm
### <a href="#widconf" class="anchor" id="widconf"><span class="octicon octicon-link"></span></a>Widget configuration
For edited output you must open Settings window and setup output format. HTML tags work normally.
For edited output you must open Settings window and setup output format. HTML
tags work normally.
Available flags are in the table below.
@ -217,7 +227,9 @@ Available flags are in the table below.
##### <a href="#lambda" class="anchor" id="lambda"><span class="octicon octicon-link"></span></a>Lambda functions
Since version 3.0.0 the main widgets supports lambda functions, which are calculated at runtime. It may be declared by using `{% raw %}${{{% endraw %} {% raw %}}}{% endraw %}` construction:
Since version 3.0.0 the main widgets supports lambda functions, which are
calculated at runtime. It may be declared by using `{% raw %}${{{% endraw %}
{% raw %}}}{% endraw %}` construction:
```javascript
{% raw %}${{{% endraw %}
@ -229,7 +241,8 @@ three()
{% raw %}}}{% endraw %}
```
A functions inside will be interpret as JavaScript ones, any variables from main body is supported, thus the following function:
A functions inside will be interpret as JavaScript ones, any variables from main
body is supported, thus the following function:
```javascript
{% raw %}${{{% endraw %}
@ -244,7 +257,8 @@ colorCpu()
{% raw %}}}{% endraw %}
```
will show `$cpu` value in red if it is more than 90.0, otherwise it will be shown in default colour. Any calculations are also supported:
will show `$cpu` value in red if it is more than 90.0, otherwise it will be shown
in default colour. Any calculations are also supported:
```javascript
{% raw %}${{{% endraw %}
@ -252,7 +266,10 @@ $down - $up
{% raw %}}}{% endraw %}
```
will show difference between download and upload speed. Another feature provided by lambda functions is `$this` value which returns the last value of the lambda function. Here is a little more complicated example which will show running line "Artist - Title" with length less or equal than 20 symbols:
will show difference between download and upload speed. Another feature provided
by lambda functions is `$this` value which returns the last value of the lambda
function. Here is a little more complicated example which will show running line
"Artist - Title" with length less or equal than 20 symbols:
```javascript
{% raw %}${{{% endraw %}
@ -268,11 +285,15 @@ runningLine()
{% raw %}}}{% endraw %}
```
Thus this feature may be used for example to show any custom values which will be calculated in runtime and to show different information depending on some conditions. But please keep in mind that such runtime calculation may increase CPU load.
Thus this feature may be used for example to show any custom values which will
be calculated in runtime and to show different information depending on some
conditions. But please keep in mind that such runtime calculation may increase
CPU load.
##### <a href="#advanced" class="anchor" id="advanced"><span class="octicon octicon-link"></span></a>Advanced settings
**Enable background:** Uncheck to disable default background and set transparent one. Default is `true`.
**Enable background:** Uncheck to disable default background and set transparent
one. Default is `true`.
**Translate strings:** Translate strings tags. Default is `true`.
@ -280,19 +301,24 @@ Thus this feature may be used for example to show any custom values which will b
**Word wrap:** Enable word wrap. Default is `false`.
**Enable popup:** Uncheck box if you do not want popup messages on system events. Default is `true`.
**Enable popup:** Uncheck box if you do not want popup messages on system events.
Default is `true`.
**Check updates:** Check updates on load. Default is `true`.
**Widget height:** Disable automatic widget height definition and set it to this value. Default is `0` (auto).
**Widget height:** Disable automatic widget height definition and set it to this
value. Default is `0` (auto).
**Widget width:** Disable automatic widget width definition and set it to this value. Default is `0` (auto).
**Widget width:** Disable automatic widget width definition and set it to this
value. Default is `0` (auto).
**Update interval:** Widget update interval. Default is `1000`.
**Queue limit:** Use thread pool with this maximum thread counts. `0` means CPU ideal thread count. Default is `0`.
**Queue limit:** Use thread pool with this maximum thread counts. `0` means CPU
ideal thread count. Default is `0`.
**Temperature units:** Select units for temperature. Available units are Celsius, Farenheit, Kelvin, Reaumur, cm^-1, kJ/mol, kcal/mol.
**Temperature units:** Select units for temperature. Available units are Celsius,
Farenheit, Kelvin, Reaumur, cm^-1, kJ/mol, kcal/mol.
**Custom time format:**
@ -337,48 +363,63 @@ Thus this feature may be used for example to show any custom values which will b
#### <a href="#tooltips" class="anchor" id="tooltips"><span class="octicon octicon-link"></span></a>Tooltips
Since version 1.7.0 CPU, CPU clock, memory, swap, network and battery support graphical tooltip. To enable them just select required fields. The number of stored values can be set in the tab. Colours of the graphs are configurable too.
Since version 1.7.0 CPU, CPU clock, memory, swap, network and battery support
graphical tooltip. To enable them just select required fields. The number of
stored values can be set in the tab. Colours of the graphs are configurable too.
#### <a href="#deguiconf" class="anchor" id="deguiconf"><span class="octicon octicon-link"></span></a>DataEngine settings
**ACPI path:** Path to ACPI devices. The file `/sys/class/power_supply/`.
**GPU device:** Select one of supported GPU devices. `auto` will enable auto selection, `disable` will disable all GPU monitors. Default is `auto`.
**GPU device:** Select one of supported GPU devices. `auto` will enable auto
selection, `disable` will disable all GPU monitors. Default is `auto`.
**HDD:** Select one of HDDs for HDD temperature monitor. `all` will enable monitor for all devices, `disable` will disable HDD temperature monitor. Default is `all`.
**HDD:** Select one of HDDs for HDD temperature monitor. `all` will enable
monitor for all devices, `disable` will disable HDD temperature monitor. Default
is `all`.
**hddtemp cmd:** Type a command which will be run for hddtemp DataEngine. Default is `sudo smartctl -a`.
**hddtemp cmd:** Type a command which will be run for hddtemp DataEngine. Default
is `sudo smartctl -a`.
**Player symbol count:** Symbol count for dynamic player tags.
**Music player:** Select one of supported music players for player label.
**MPRIS:** Select MPRIS player name. `auto` will enable auto selection. Default is `auto`.
**MPRIS:** Select MPRIS player name. `auto` will enable auto selection. Default
is `auto`.
**MPD address:** Address of MPD server. Default is `localhost`.
**MPD port:** Port of MPD server. Default is `6600`.
### <a href="#desktoppanel" class="anchor" id="desktoppanel"><span class="octicon octicon-link"></span></a>Desktop Panel
Since version 1.11.0 it provides a minimalistic panel for monitoring on desktops. And yes, it looks like the same panel in Awesome.
Since version 1.11.0 it provides a minimalistic panel for monitoring on desktops.
And yes, it looks like the same panel in Awesome.
##### <a href="#dpconf" class="anchor" id="dpconf"><span class="octicon octicon-link"></span></a>Desktop panel configuration
**Enable background:** Uncheck to disable default background and set transparent one. Default is `true`.
**Enable background:** Uncheck to disable default background and set transparent
one. Default is `true`.
**Vertical layout:** Use vertical layout instead of horizontal one. Default is `false`.
**Vertical layout:** Use vertical layout instead of horizontal one. Default is
`false`.
**Widget height:** Disable automatic widget height definition and set it to this value. Default is `0` (auto).
**Widget height:** Disable automatic widget height definition and set it to this
value. Default is `0` (auto).
**Widget width:** Disable automatic widget width definition and set it to this value. Default is `0` (auto).
**Widget width:** Disable automatic widget width definition and set it to this
value. Default is `0` (auto).
**Mark:** Type symbol (or string) which will be shown if this desktop is active now.
**Mark:** Type symbol (or string) which will be shown if this desktop is active
now.
**Tooltip type:** Select tooltip type. Default is `windows`.
**Tooltip width:** Using tooltip width in px. Default is `200px`.
**Color of tooltip:** Colour which is used in some tooltip types. Default is `#ffffff`.
**Color of tooltip:** Colour which is used in some tooltip types. Default is
`#ffffff`.
**Pattern tags**

View File

@ -16,7 +16,10 @@ links:
---
<!-- info block -->
Plasmoid written on `CPP` that displays a random draw from Brian Eno and Peter Schmidt's [Oblique Strategies](//en.wikipedia.org/wiki/Oblique_strategies "Wiki"). It is [GNOME applet](//gnome-look.org/content/show.php/Oblique+Strategies?content=78405 "gnome-look") fork with some of special features.
Plasmoid written on `CPP` that displays a random draw from Brian Eno and Peter
Schmidt's [Oblique Strategies](//en.wikipedia.org/wiki/Oblique_strategies "Wiki").
It is [GNOME applet](//gnome-look.org/content/show.php/Oblique+Strategies?content=78405
"gnome-look") fork with some of special features.
<!--more-->
@ -36,7 +39,8 @@ Plasmoid written on `CPP` that displays a random draw from Brian Eno and Peter S
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Instruction
* Download an [archive](//github.com/arcan1s/oblikuestrategies/releases "GitHub") with latest version of source files.
* Download an [archive](//github.com/arcan1s/oblikuestrategies/releases "GitHub")
with latest version of source files.
* Extract it and install the application. For global isntallation type:
```bash
@ -63,7 +67,8 @@ Plasmoid written on `CPP` that displays a random draw from Brian Eno and Peter S
kquitapp plasma-desktop && sleep 2 && plasma-desktop
```
Also you might need to run `kbuildsycoca4` in order to get the `*.desktop` file recognized:
Also you might need to run `kbuildsycoca4` in order to get the `*.desktop`
file recognized:
```bash
kbuildsycoca4 &> /dev/null

View File

@ -14,7 +14,8 @@ links:
---
<!-- info block -->
Daemon for starting jobs to queue of calculations. It was written as proof-of-concept.
Daemon for starting jobs to queue of calculations. It was written as
proof-of-concept.
<!--more-->
@ -57,7 +58,8 @@ Parameters:
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Instruction
* Download an [archive](//github.com/arcan1s/queued/releases "GitHub") with latest version of source files.
* Download an [archive](//github.com/arcan1s/queued/releases "GitHub") with
latest version of source files.
* Extract it and install the application:
```bash
@ -96,7 +98,8 @@ If you want to enable daemon autoload run
systemctl enable queued
```
But you may change path to configuration file or change parameters. To do it just copy (recommended) the source configuration file to new path
But you may change path to configuration file or change parameters. To do it
just copy (recommended) the source configuration file to new path
```bash
cp /etc/queued.conf /path/to/new/queued.conf
@ -131,7 +134,8 @@ Also you may use `add_queued`.
## <a href="#configuration" class="anchor" id="configuration"><span class="octicon octicon-link"></span></a>Configuration
All settings are stored in `/etc/queued.conf`. After edit them you must restart daemon
All settings are stored in `/etc/queued.conf`. After edit them you must restart
daemon
```bash
systemctl restart queued

View File

@ -20,11 +20,16 @@ links:
---
<!-- info block -->
Graphical interface for `netctl` (several scripts for work with network connection in Archlinux). It is written on `C++` using `Qt` library. Now it may work with profiles and may create new profiles. Also it may create a connection to WiFi. Moreover, it provides a Qt library for interaction with netctl and widget and DataEngine for KDE4/KF5.
Graphical interface for `netctl` (several scripts for work with network connection
in Archlinux). It is written on `C++` using `Qt` library. Now it may work with
profiles and may create new profiles. Also it may create a connection to WiFi.
Moreover, it provides a Qt library for interaction with netctl and widget and
DataEngine for KDE4/KF5.
<!--more-->
**NOTE:** [LOOKING FOR TRANSLATORS!](//github.com/arcan1s/netctl-gui/issues/3 "Ticket")
**NOTE:** [LOOKING FOR TRANSLATORS!](//github.com/arcan1s/netctl-gui/issues/3
"Ticket")
```bash
$ netctl-gui --help
@ -91,8 +96,10 @@ Options:
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Instruction
* Download an [archive](//github.com/arcan1s/netctl-gui/releases "GitHub") with latest version of source files.
* Extract it and install the application. If you want install it into `/`, you should run as root following commands:
* Download an [archive](//github.com/arcan1s/netctl-gui/releases "GitHub") with
latest version of source files.
* Extract it and install the application. If you want install it into `/`, you
should run as root following commands:
```bash
cd /path/to/extracted/archive
@ -139,21 +146,25 @@ I want note that all were tested on latest version of dependencies.
<!-- howto block -->
## <a href="#howto" class="anchor" id="howto"><span class="octicon octicon-link"></span></a>How to use
Just run application `netctl-gui`. If it is needed (and if you use KDE), you may add widget `netctl`, which provides by the application.
Just run application `netctl-gui`. If it is needed (and if you use KDE), you may
add widget `netctl`, which provides by the application.
<!-- end of howto block -->
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Configuration
It is recommended to use graphical interface for configuration. Configuration files are:
It is recommended to use graphical interface for configuration. Configuration
files are:
* UI and helper
* `$HOME/.config/netctl-gui.conf` - GUI/helper user configuration
* `/etc/netctl-gui.conf` - helper system-wide configuration
* DataEngine (KDE4 version)
* `$KDEHOME/share/config/plasma-dataengine-netctl.conf` - DataEngine user configuration
* `$KDESYSTEM/share/config/plasma-dataengine-netctl.conf` - DataEngine system-wide configuration
* `$KDEHOME/share/config/plasma-dataengine-netctl.conf` - DataEngine user
configuration
* `$KDESYSTEM/share/config/plasma-dataengine-netctl.conf` - DataEngine
system-wide configuration
* DataEngine (KF5 version)
* `$HOME/.config/plasma-dataengine-netctl.conf` - DataEngine user configuration
* `/etc/xdg/plasma-dataengine-netctl.conf` - DataEngine system-wide configuration

View File

@ -14,7 +14,10 @@ links:
---
<!-- info block -->
Qt application/library which allows users to create an issue for projects which are hosted on GitHub. It may work over [GitHub](//github.com "GitHub") or [GitReport](//gitreports.com/ "GitReports"). It works fine, but it was created as proof-of-concept.
Qt application/library which allows users to create an issue for projects which
are hosted on GitHub. It may work over [GitHub](//github.com "GitHub") or
[GitReport](//gitreports.com/ "GitReports"). It works fine, but it was created
as proof-of-concept.
<!--more-->
@ -36,7 +39,8 @@ Qt application/library which allows users to create an issue for projects which
#### <a href="#singleapp" class="anchor" id="singleapp"><span class="octicon octicon-link"></span></a>Build as a standalone application
* Download the actual source [tarball](//github.com/arcan1s/reportabug/releases "GitHub").
* Download the actual source [tarball](//github.com/arcan1s/reportabug/releases
"GitHub").
* Extract it and set up your configuration.
* Install the application:
@ -50,7 +54,8 @@ Qt application/library which allows users to create an issue for projects which
#### <a href="#aslibrary" class="anchor" id="aslibrary"><span class="octicon octicon-link"></span></a>Build as a library in your project
* Download the actual source [tarball](//github.com/arcan1s/reportabug/releases "GitHub").
* Download the actual source [tarball](//github.com/arcan1s/reportabug/releases
"GitHub").
* Extract it and set up your configuration.
* include it into your project. For example if you use `cmake`:
@ -86,7 +91,8 @@ I want note that all were tested on latest version of dependencies.
* automoc4 *(make)*
* cmake *(make)*
* doxygen *(make, documentation)*
* qt5-webkit (if Qt5 is used) **or** qtwebkit (if Qt4 is used) *(optional, required by GitReports module)*
* qt5-webkit (if Qt5 is used) **or** qtwebkit (if Qt4 is used) *(optional,
required by GitReports module)*
<!-- end of install block -->
@ -95,7 +101,9 @@ I want note that all were tested on latest version of dependencies.
### <a href="#github" class="anchor" id="github"><span class="octicon octicon-link"></span></a>GitHub module
This module creates an issue over GitHub. [GitHub API](//developer.github.com/v3/issues/ "Documentation") is used for creating issue. User should type own username and password. The typical POST request is:
This module creates an issue over GitHub. [GitHub API](//developer.github.com/v3/issues/
"Documentation") is used for creating issue. User should type own username and
password. The typical POST request is:
```bash
curl -X POST -u user:pass -d '{"title":"A new bug","body":"Some error occurs"}' \
@ -104,7 +112,10 @@ curl -X POST -u user:pass -d '{"title":"A new bug","body":"Some error occurs"}'
To disable this module use `-DENABLE_GITHUB=0` cmake flag.
This module may send request using developer's token too. Please visit [this page](//github.com/settings/applications "Settings") and generate a new one. Needed scopes are `public_repo` (or `repo` if you will use it for a private repository).
This module may send request using developer's token too. Please visit [this
page](//github.com/settings/applications "Settings") and generate a new one.
Needed scopes are `public_repo` (or `repo` if you will use it for a private
repository).
**Please keep in mind that passing the token in the clear, you may discredit your account.**
@ -121,16 +132,21 @@ This module requires `QtNetwork` module.
### <a href="#gitreports" class="anchor" id="gitreports"><span class="octicon octicon-link"></span></a>GitReports module
This module creates issue over [GitReports](//gitreports.com/about "GitReports"). Please visit [this page](//gitreports.com/ "GitReports") and set up it for your repository.
This module creates issue over [GitReports](//gitreports.com/about "GitReports").
Please visit [this page](//gitreports.com/ "GitReports") and set up it for your
repository.
To disable this module use `-DENABLE_GITREPORT=0` cmake flag. This module requires `QtNetwork` and `QtWebKit` modules.
To disable this module use `-DENABLE_GITREPORT=0` cmake flag. This module requires
`QtNetwork` and `QtWebKit` modules.
<!-- end of howto block -->
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Configuration
For the developer configuration please use `config.h` header. Also you may load parametrs dynamically using `params` array (needed keys is the same as for the header
For the developer configuration please use `config.h` header. Also you may load
parametrs dynamically using `params` array (needed keys is the same as for the
header
### <a href="#mainconfig" class="anchor" id="mainconfig"><span class="octicon octicon-link"></span></a>Main configuration
@ -138,20 +154,31 @@ For the developer configuration please use `config.h` header. Also you may load
* `PROJECT` - the project name.
* `TAG_BODY` - default body of an issue. It may be used for both modules.
* `TAG_TITLE` - default title of an issue. It may be used only for GitHub module.
* `TAG_ASSIGNEE` - assign an issue to this account. It may be used only for GitHub module. This tag will work only if user has push access. If it will be empty, it will be ignored.
* `TAG_LABELS` - set these labels to an issue. Labels should be comma separated. It may be used only for GitHub module. This tag will work only if user has push access. If it will be empty, it will be ignored.
* `TAG_MILESTONE` - set this milestone to an issue. It may be used only for GitHub module. This tag will work only if user has push access. If it will be empty, it will be ignored.
* `TAG_ASSIGNEE` - assign an issue to this account. It may be used only for
GitHub module. This tag will work only if user has push access. If it will be
empty, it will be ignored.
* `TAG_LABELS` - set these labels to an issue. Labels should be comma separated.
It may be used only for GitHub module. This tag will work only if user has push
access. If it will be empty, it will be ignored.
* `TAG_MILESTONE` - set this milestone to an issue. It may be used only for
GitHub module. This tag will work only if user has push access. If it will be
empty, it will be ignored.
### <a href="#githubconfig" class="anchor" id="githubconfig"><span class="octicon octicon-link"></span></a>GitHub module settings
* `GITHUB_COMBOBOX` - text of this module into comboBox.
* `ISSUES_URL` - issues url, in the most cases do not touch it. Default is `//api.github.com/repos/$OWNER/$PROJECT/issues`. Available tags here are `$PROJECT`, `$OWNER`.
* `ISSUES_URL` - issues url, in the most cases do not touch it. Default is
`//api.github.com/repos/$OWNER/$PROJECT/issues`. Available tags here are
`$PROJECT`, `$OWNER`.
### <a href="#gitreportsconfig" class="anchor" id="gitreportsconfig"><span class="octicon octicon-link"></span></a>GitReports module settings
* `CAPTCHA_URL` - captcha url, in the most cases do not touch it. Default is `//gitreports.com/simple_captcha?code=`.
* `CAPTCHA_URL` - captcha url, in the most cases do not touch it. Default is
`//gitreports.com/simple_captcha?code=`.
* `GITREPORT_COMBOBOX` - text of this module into comboBox.
* `PUBLIC_URL` - issues url, in the most cases do not touch it. Default is `//gitreports.com/issue/$OWNER/$PROJECT`. Available tags here are `$PROJECT`, `$OWNER`.
* `PUBLIC_URL` - issues url, in the most cases do not touch it. Default is
`//gitreports.com/issue/$OWNER/$PROJECT`. Available tags here are `$PROJECT`,
`$OWNER`.
<!-- end of config block -->

View File

@ -7,7 +7,11 @@ tags: zshrc, настройка, linux
title: О zshrc
short: about-zshrc
---
Это моя первая статья в блоге (я думаю, мне нужно что-нибудь для тестов =)). Существует множество похожих статей и, я думаю, не буду отличаться от большинства. Я просто хочу показать мой `.zshrc` и объяснить, что в нем есть и зачем оно нужно. Также, любые комментарии или дополнения приветствуются. [Оригинал](//archlinux.org.ru/forum/topic/12752/ "Тема на форуме") статьи.
Это моя первая статья в блоге (я думаю, мне нужно что-нибудь для тестов =)).
Существует множество похожих статей и, я думаю, не буду отличаться от большинства.
Я просто хочу показать мой `.zshrc` и объяснить, что в нем есть и зачем оно нужно.
Также, любые комментарии или дополнения приветствуются. [Оригинал]
(//archlinux.org.ru/forum/topic/12752/ "Тема на форуме") статьи.
<!--more-->
@ -19,13 +23,17 @@ short: about-zshrc
pacman -Sy pkgfile zsh zsh-completions zsh-syntax-highlighting
```
[pkgfile](//www.archlinux.org/packages/pkgfile/ "Пакет Archlinux") очень полезная утилита. Данная команда также установит шелл, дополнения к нему и подсветку синтаксиса.
[pkgfile](//www.archlinux.org/packages/pkgfile/ "Пакет Archlinux") очень полезная
утилита. Данная команда также установит шелл, дополнения к нему и подсветку
синтаксиса.
## <a href="#configuration" class="anchor" id="configuration"><span class="octicon octicon-link"></span></a>Настройка шелла
Все доступные опции приведены [здесь](//zsh.sourceforge.net/Doc/Release/Options.html "Документация zsh").
Все доступные опции приведены [здесь](//zsh.sourceforge.net/Doc/Release/Options.html
"Документация zsh").
Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и число команд, хранящихся в файле:
Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и
число команд, хранящихся в файле:
```bash
# history
@ -34,7 +42,8 @@ HISTSIZE=500000
SAVEHIST=500000
```
Я не могу запомнить все комбинации `Ctrl+`, поэтому я назначаю клавиши на их стандартное использование:
Я не могу запомнить все комбинации `Ctrl+`, поэтому я назначаю клавиши на их
стандартное использование:
```bash
# bindkeys
@ -48,7 +57,9 @@ bindkey '\e[5~' up-line-or-history # page-up
bindkey '\e[6~' down-line-or-history # page-down
```
Но здесь важно, что стрелки `вверх`/`вниз` служат для навигации по истории с учетом **уже введенной части** команды. А `PgUp`/`PgDown` **проигнорируют** уже введенную часть команды.
Но здесь важно, что стрелки `вверх`/`вниз` служат для навигации по истории с
учетом **уже введенной части** команды. А `PgUp`/`PgDown` **проигнорируют** уже
введенную часть команды.
Автодополнение команд:
@ -60,7 +71,9 @@ zstyle ':completion:*' insert-tab false
zstyle ':completion:*' max-errors 2
```
Подключается полное автодополнение команд. `insert-tab false` включит автодополнение для **невведенной** команды (не знаю, зачем). `max-errors` устанавливает максимальное число опечаток, которые могут быть исправлены.
Подключается полное автодополнение команд. `insert-tab false` включит
автодополнение для **невведенной** команды (не знаю, зачем). `max-errors`
устанавливает максимальное число опечаток, которые могут быть исправлены.
Приглашение:
@ -192,7 +205,10 @@ ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow' # конс
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'
```
В первой строке включаем подсветку. Затем включаем основную подсветку, а также подсветку скобок и шаблонов. Шаблоны указываются ниже (`rm -rf *` в примере). Также может быть включена подсветка команд от `root` и курсора `cursor`. Синтаксис настроек понятен, `fg` цвет шрифта, `bg` цвет фона.
В первой строке включаем подсветку. Затем включаем основную подсветку, а также
подсветку скобок и шаблонов. Шаблоны указываются ниже (`rm -rf *` в примере).
Также может быть включена подсветка команд от `root` и курсора `cursor`.
Синтаксис настроек понятен, `fg` цвет шрифта, `bg` цвет фона.
## <a href="#prompt" class="anchor" id="prompt"><span class="octicon octicon-link"></span></a>$PROMPT и $RPROMPT
@ -219,7 +235,9 @@ else
fi
```
`fg` цвет шрифта, `bg` цвет фона. `_bold` и `_no_bold` регулируют оттенок. Команды должны быть обрамлены в `%{ ... %}`, чтобы не показывались. Доступные цвета:
`fg` цвет шрифта, `bg` цвет фона. `_bold` и `_no_bold` регулируют оттенок.
Команды должны быть обрамлены в `%{ ... %}`, чтобы не показывались. Доступные
цвета:
```bash
black
@ -276,11 +294,15 @@ $returncode\
"%{$fg_bold[white]%}]%{$reset_color%}"
```
Мой RPROMPT показывает текущее время, заряд батареи и код возврата последнего приложения. `precmd()` необходимо для автоматического обновления. Конструкция `$(if.true.false)` является условным оператором в `zsh`.
Мой RPROMPT показывает текущее время, заряд батареи и код возврата последнего
приложения. `precmd()` необходимо для автоматического обновления. Конструкция
`$(if.true.false)` является условным оператором в `zsh`.
## <a href="#aliases" class="anchor" id="aliases"><span class="octicon octicon-link"></span></a>Аллиасы
**Копируйте только те аллиасы, которые Вам необходимы.** Если какой-либо аллиас использует приложение, которое не установлено, это приведет к сбою загрузки конфигурационного файла.
**Копируйте только те аллиасы, которые Вам необходимы.** Если какой-либо аллиас
использует приложение, которое не установлено, это приведет к сбою загрузки
конфигурационного файла.
Полезная (или не очень) функция:
@ -360,7 +382,8 @@ else
fi
```
Некоторые глобальные аллиасы. Если они включены, команда `cat foo g bar` будет эквивалентна `cat foo | grep bar`:
Некоторые глобальные аллиасы. Если они включены, команда `cat foo g bar` будет
эквивалентна `cat foo | grep bar`:
```bash
# global alias
@ -398,7 +421,8 @@ projctl () {
}
```
К сожалению, я не могу запомнить флаги `tar`, поэтому я использую специальные функции:
К сожалению, я не могу запомнить флаги `tar`, поэтому я использую специальные
функции:
```bash
# function to extract archives
@ -471,7 +495,9 @@ su () {
}
```
Функция, которая заменяет оригиналькую команду `rm`. Если Вы наберете `rm`, это будет эквивалентно перемещению в корзину, также, Вы можете легко восстановить удаленный файл:
Функция, которая заменяет оригиналькую команду `rm`. Если Вы наберете `rm`, это
будет эквивалентно перемещению в корзину, также, Вы можете легко восстановить
удаленный файл:
```bash
rm () {

View File

@ -7,17 +7,29 @@ tags: archlinux, linux, сборка, qutim
title: Сборка Qutim с Qt5
short: building-qutim-using-qt5
---
Если кто-то не знает, [Qutim](//qutim.org "Домашняя страница Qutim") - мультипротокольный кросс-платформенный месседжер. Написан он на `CPP` с использованием библиотек Qt. Проект активно развивается. В этой статье речь пойдет о реализации сборки данного пакета в Archlinux с использованием библиотек Qt5 (а не Qt4, как это делают текущие пакеты в AUR).
Если кто-то не знает, [Qutim](//qutim.org "Домашняя страница Qutim") -
мультипротокольный кросс-платформенный месседжер. Написан он на `CPP` с
использованием библиотек Qt. Проект активно развивается. В этой статье речь
пойдет о реализации сборки данного пакета в Archlinux с использованием библиотек
Qt5 (а не Qt4, как это делают текущие пакеты в AUR).
<!--more-->
## <a href="#problems" class="anchor" id="problems"><span class="octicon octicon-link"></span></a>Что не так?
Да все так. Просто пакет использует для сборки систему [qbs](//qt-project.org/wiki/qbs "Wiki"), которая, на мой взгляд, немного странная. Пакет, необходимый для сборки, [находится в AUR](//aur.archlinux.org/packages/qbs-git/ "AUR") (рекомендую git-версию). Когда я спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в официальные репозитории) по поводу переноса этого пакета в репозитории, он ответил, что всему свое время. В принципе, я с ним согласен, так как проект, судя по всему, еще немного сыроват.
Да все так. Просто пакет использует для сборки систему [qbs]
(//qt-project.org/wiki/qbs "Wiki"), которая, на мой взгляд, немного странная.
Пакет, необходимый для сборки, [находится в AUR]
(//aur.archlinux.org/packages/qbs-git/ "AUR") (рекомендую git-версию). Когда я
спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в
официальные репозитории) по поводу переноса этого пакета в репозитории, он
ответил, что всему свое время. В принципе, я с ним согласен, так как проект,
судя по всему, еще немного сыроват.
## <a href="#prepare" class="anchor" id="prepare"><span class="octicon octicon-link"></span></a>Подготовка
Установим зависимости. Что-то может быть пропустил, зависимости сканировал с использованием `namcap`:
Установим зависимости. Что-то может быть пропустил, зависимости сканировал с
использованием `namcap`:
```bash
pacman -Sy --asdeps clang git libc++abi qt5-quick1 qt5-x11extras
@ -26,21 +38,28 @@ yaourt -S --asdeps jreen-git qbs-git
### <a href="#qbs" class="anchor" id="qbs"><span class="octicon octicon-link"></span></a>Настройка qbs
Желающие могут почитать документацию [по ссылке](//qt-project.org/wiki/qbs "Wiki") или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука использует файл настроек, который, во-первых, нужно сначала сгенерировать, во-вторых, хранится в домашней директории (и только там). В теории, генерация файла настроек (`~/.config/QtProject/qbs.conf`) происходит следующим образом:
Желающие могут почитать документацию [по ссылке](//qt-project.org/wiki/qbs "Wiki")
или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука
использует файл настроек, который, во-первых, нужно сначала сгенерировать,
во-вторых, хранится в домашней директории (и только там). В теории, генерация
файла настроек (`~/.config/QtProject/qbs.conf`) происходит следующим образом:
```bash
qbs-setup-qt --detect
qbs-detect-toolchains
```
Сначала находим Qt для сборки, потом находим инструментарий (компиляторы, например). Дальше вставляем инструментарий (например, нам для Qutim нужен `clang`) в Qt, например, так:
Сначала находим Qt для сборки, потом находим инструментарий (компиляторы,
например). Дальше вставляем инструментарий (например, нам для Qutim нужен
`clang`) в Qt, например, так:
```bash
sed 's/clang\\/qt-5-2-0\\/g' -i ~/.config/QtProject/qbs.conf
```
Альтернативные варианты - править файл вручную или воспользоваться `qbs-config-ui` или `qbs-config` на Ваш выбор.
Так или иначе, нужный файл мы сгенерировали, сохраним его в будущей директории сборки:
Альтернативные варианты - править файл вручную или воспользоваться `qbs-config-ui`
или `qbs-config` на Ваш выбор. Так или иначе, нужный файл мы сгенерировали,
сохраним его в будущей директории сборки:
```ini
[General]
@ -142,7 +161,10 @@ cd qutim
HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
```
Я пытался сделать универсальный способ сборки пакета, поэтому такое странное переназначение домашней директории. Флаг `-j` указывает число потоков сборки, флаг `-d` директорию сборки, `release` тип сборки (debug, release), `profile` используемый профиль, описанный в файле настроек.
Я пытался сделать универсальный способ сборки пакета, поэтому такое странное
переназначение домашней директории. Флаг `-j` указывает число потоков сборки,
флаг `-d` директорию сборки, `release` тип сборки (debug, release), `profile`
используемый профиль, описанный в файле настроек.
## <a href="#install" class="anchor" id="install"><span class="octicon octicon-link"></span></a>Установка
@ -150,7 +172,8 @@ HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
HOME=$(pwd) sudo qbs install -d ../build --install-root "/usr" profile:qutim
```
Из нового - указание корневого каталога (`--install-root`). Без этого пакет будет установлен в `/` (`/bin` и `/lib`).
Из нового - указание корневого каталога (`--install-root`). Без этого пакет будет
установлен в `/` (`/bin` и `/lib`).
## <a href="#pkgbuild" class="anchor" id="pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD

View File

@ -13,7 +13,13 @@ short: site-changes
## <a href="#list" class="anchor" id="list"><span class="octicon octicon-link"></span></a>Cписок изменений:
* Арендовал домен `arcanis.me`. Теперь, как и все белые люди, имею нормальный адрес. Небольшое описание (мне, как человеку далекому от интернет-технологий, пришлось немного попариться на эту тему). Арендуем домен, подключаем услугу редактирования DNS (для Ru-center [DNS-master](//www.nic.ru/dns/service/dns_hosting/ "Сервис")) - суммарно мне обошлось около 1100 рублей/год. Кладем в наш репозиторий с сайтом файл CNAME, содержащий имя желаемого домена. Идем и добавляем две записи в DNS для нашего домена:
* Арендовал домен `arcanis.me`. Теперь, как и все белые люди, имею нормальный
адрес. Небольшое описание (мне, как человеку далекому от интернет-технологий,
пришлось немного попариться на эту тему). Арендуем домен, подключаем услугу
редактирования DNS (для Ru-center [DNS-master]
(//www.nic.ru/dns/service/dns_hosting/ "Сервис")) - суммарно мне обошлось около
1100 рублей/год. Кладем в наш репозиторий с сайтом файл CNAME, содержащий имя
желаемого домена. Идем и добавляем две записи в DNS для нашего домена:
```bash
@ A 192.30.252.153
@ -22,7 +28,8 @@ short: site-changes
www CNAME @
```
(`@` значит наш корневой домен.) Ждем пару часов. Результат можно узнать примерно так:
(`@` значит наш корневой домен.) Ждем пару часов. Результат можно узнать
примерно так:
```bash
$ dig domain.name +nostats +nocomments +nocmd
@ -34,8 +41,11 @@ short: site-changes
...
```
* На радостях создал [собственный репозиторий](ftp://repo.arcanis.me/repo "Репозиторий"), в котором будут лежать некоторые пакеты из AUR, которые я использую. Планируется поддержка обеих архитектур.
* Поскольку репозиторий требует ftp, то перевел samba на ftp. Проблему доступа решил опциями монтирования:
* На радостях создал [собственный репозиторий](ftp://repo.arcanis.me/repo
"Репозиторий"), в котором будут лежать некоторые пакеты из AUR, которые я
использую. Планируется поддержка обеих архитектур.
* Поскольку репозиторий требует ftp, то перевел samba на ftp. Проблему доступа
решил опциями монтирования:
```bash
# только чтение
@ -45,7 +55,9 @@ short: site-changes
/home/arcanis/share.fs /srv/ftp/share ext4 defaults,rw 0 0
```
Для отсутствия доступа извне к директории с музыкой, используется логин под специальным пользователем и ограничение `anon_world_readable_only=YES`. Также привожу свой файл настроек `/etc/vsftpd.conf`:
Для отсутствия доступа извне к директории с музыкой, используется логин под
специальным пользователем и ограничение `anon_world_readable_only=YES`.
Также привожу свой файл настроек `/etc/vsftpd.conf`:
```bash
anonymous_enable=YES
@ -68,10 +80,13 @@ short: site-changes
listen=YES
```
Теперь добавим переадресацию с `repo.arcanis.me` на нужный IP адрес. Для этого внесем следующие записи в DNS:
Теперь добавим переадресацию с `repo.arcanis.me` на нужный IP адрес. Для э
того внесем следующие записи в DNS:
```bash
repo A 89.249.170.38
```
* В ближайшее время (как дойду до магазина с деньгами) планируется приобретение небольшого сервера для работы на постоянной основе (компиляция пакетов, репозиторий, файлообмен, бэкапы).
* В ближайшее время (как дойду до магазина с деньгами) планируется приобретение
небольшого сервера для работы на постоянной основе (компиляция пакетов, репозиторий,
файлообмен, бэкапы).

View File

@ -13,13 +13,19 @@ short: creating-custom-repo
## <a href="#prepare" class="anchor" id="prepare"><span class="octicon octicon-link"></span></a>Подготовка
Для начала находим сервер и желание с ним заниматься сексом. Для простоты, лучше, чтобы там стоял Archlinux, хотя, это и не совсем обязательно (можно создать отдельный корень под Arch). Из пакетов, пожалуй, нам понадобится только два, `devtools` и сам `pacman`:
Для начала находим сервер и желание с ним заниматься сексом. Для простоты, лучше,
чтобы там стоял Archlinux, хотя, это и не совсем обязательно (можно создать
отдельный корень под Arch). Из пакетов, пожалуй, нам понадобится только два,
`devtools` и сам `pacman`:
```bash
pacman -Sy devtools
```
[devtools](//www.archlinux.org/packages/devtools/ "Пакет Archlinux") - набор скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю, большинство мейнтейнеров Arch'а пользуются им.
[devtools](//www.archlinux.org/packages/devtools/ "Пакет Archlinux") - набор
скриптов, предназначенный для автоматизации сборки пакетов в чистом чруте. Думаю,
большинство мейнтейнеров Arch'а пользуются им.
Создадим рабочие директории и установим цвета:
```bash
@ -58,11 +64,16 @@ if [ ! -d "${STAGINGDIR}" ]; then
fi
```
Директории `${REPODIR}/{i686,x86_64}` для самого репозитория, `${PREPAREDIR}` - директория, где будут лежать собранные пакеты, `${STAGINGDIR}` - директория, откуда будут собираться пакеты.
Директории `${REPODIR}/{i686,x86_64}` для самого репозитория, `${PREPAREDIR}` -
директория, где будут лежать собранные пакеты, `${STAGINGDIR}` - директория,
откуда будут собираться пакеты.
## <a href="#theory" class="anchor" id="theory"><span class="octicon octicon-link"></span></a>Немного теории
Создаем директорию, расшариваем ее (например, по [ftp](/ru/2014/03/06/site-changes/ "Статья про изменения сайта")). В ней две субдиректории - `i686` и `x86_64`, для каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему усмотрению.
Создаем директорию, расшариваем ее (например, по [ftp](/ru/2014/03/06/site-changes/
"Статья про изменения сайта")). В ней две субдиректории - `i686` и `x86_64`, для
каждого типа архитектур соответственно. И наполняем их набором пакетов по Вашему
усмотрению.
Процесс обновления репозитория можно разбить на следующие части:
@ -150,7 +161,8 @@ if [ ${USEGPG} == "yes" ]; then
fi
```
Для удобства рекомендую настроить [gpg-agent](//wiki.archlinux.org/index.php/GPG#gpg-agent "ArchWiki").
Для удобства рекомендую настроить [gpg-agent]
(//wiki.archlinux.org/index.php/GPG#gpg-agent "ArchWiki").
### <a href="#list" class="anchor" id="list"><span class="octicon octicon-link"></span></a>Создание списка пакетов
@ -224,7 +236,8 @@ cd "${STAGINGDIR}"
### <a href="#symlinks" class="anchor" id="symlinks"><span class="octicon octicon-link"></span></a>Создание симлинков
Вы можете захотеть создать директорию, которая будет содержать симлинки на актуальные версии пакетов с именами, не содержащими версии:
Вы можете захотеть создать директорию, которая будет содержать симлинки на
актуальные версии пакетов с именами, не содержащими версии:
```bash
# создание симлинков
@ -249,7 +262,9 @@ fi
### <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>Файл
[Скрипты](//github.com/arcan1s/repo-scripts "GitHub") целиком. Скачиваем исходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные) и радуемся жизни.
[Скрипты](//github.com/arcan1s/repo-scripts "GitHub") целиком. Скачиваем и
сходники для пакетов, запускаем скрипт (при необходимости, редактируем переменные)
и радуемся жизни.
## <a href="#using" class="anchor" id="using"><span class="octicon octicon-link"></span></a>Использование репозитория

View File

@ -7,28 +7,94 @@ tags: настройка, linux, archlinux
title: Приложения, которые я использую
short: my-desktop
---
Небольшая статья, посвященная набору приложений и расширений, которые я использую в повседневной жизни на моем домашнем компьютере.
Небольшая статья, посвященная набору приложений и расширений, которые я
использую в повседневной жизни на моем домашнем компьютере.
<!--more-->
## <a href="#apps" class="anchor" id="apps"><span class="octicon octicon-link"></span></a>Приложения
* **Shell** - zshrc без вариантов. Некоторое описание моих настроек шелла могут быть найдены [тут](/ru/2014/01/14/about-zshrc/ "Статья о zshrc"). Сами настройки хранятся [тут](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc "Файл") или [тут](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server "Файл").
* **DE** - KDE со всеми вытекающими (поэтому набор приложений, преимущественно, Qt-based). Некоторые подробности приготовления KDE будут даны ниже.
* **Работа с изображениями** - [gwenview](//kde.org/applications/graphics/gwenview/ "Домашняя страница Gwenview") для просмотра и быстрого редактирования, [kolourpaint](//kde.org/applications/graphics/kolourpaint/ "Домашняя страница Kolourpaint") для простого редактирования стандартных форматов пиксельной графики, [gimp](//www.gimp.org/ "Домашняя страница Gimp") (без плагинов, ибо не было необходимости) для более сурового редактирования и [inkskape](//www.inkscape.org/ "Домашняя страница Inkskape") для работы с векторной графикой.
* **Браузер** - Firefox, ранее Qupzilla, еще ранее Opera. Некоторый набор настроек Firefox будет дан ниже. Дополнительный браузер - Chromium. Консольный - elinks.
* **IM клиент** - [qutIM](//qutim.org "Домашняя страница Qutim"). Кроссплатформенный, мультипротокольный, с необходимым набором фич. [Kopete](//kde.org/applications/internet/kopete/ "Домашняя страница Kopete"), который использовался ранее, часто падал, работал как хотел и вообще не дружил с кодировкой. Раньше еще был какой то консольный, но сейчас его нет. Для таких случаев предпочитаю использовать клиент с планшета. Skype для скайпа, очевидно.
* **Почтовый клиент** - [kmail](//kde.org/applications/internet/kmail/ "Домашняя страница Kmail"). Много фич, большая часть из которых мною используется, симпатично выглядит и удобный. Еще бы был DE-независимый, цены бы ему не было.
* **IRC клиент** - [konversation](//konversation.kde.org/ "Домашняя страница Konversation"). Самый обычный IRC-клиент. Хотя, если мне не изменяет память, qutIM тоже поддерживает IRC протокол, лично мне удобнее использовать отдельный клиент для этого.
* **Torrent клиент** - [transmission](//www.transmissionbt.com/ "Домашняя страница Transmission") с Qt5 интерфейсом (gtk тоже имеется). Для сервера он же, но без GUI.
* **Видео плеер** - [mpv](//mpv.io/ "Домашняя страница mpv"). Mplayer умер, а mplayer2 родился мертворожденным. Ах да, графические надстройки сверху ненужны.
* **Аудио плеер** - [qmmp](//qmmp.ylsoftware.com/ "Домашняя страница Qmmp"). Хороший, годный плеер с закосом под winamp. Легким движением руки делаем ему человеческий интерфейс aka simpleui.
* **Работа с аудио/видео** - [kdenlive](//kde-apps.org/content/show.php?content=29024 "Домашняя страница kdenlive") для работы с видео, [soundkonverter](//kde-apps.org/content/show.php?content=29024 "Домашняя страница Soundkonverter") для работы с аудио, [easytag](//wiki.gnome.org/Apps/EasyTAG "Домашняя страница Easytag") для работы с аудио тегами (gtk, но зато единственный, чья функциональность меня устроила). Ну и командная строка и небольшие скрипты на bash.
* **Офис** - [Kingsoft Office](//wps-community.org/ "Домашняя страница KO") в качестве замены Microsoft Office; в общем то ничем не примечательный, разве что не так ущербно смотрится, как стандартные офисы, Qt-based и, говорят, с хорошей поддержкой стандартных форматов. Версия под линукс находится в состоянии альфы. [Kile](//kile.sourceforge.net/ "Домашняя страница Kile") в качестве фронтенда к LaTeX. [Okular](//kde.org/applications/graphics/okular/ "Домашняя страница Okular"), как просмотрщик всего. [GoldenDict](//goldendict.org/ "Домашняя страница GoldenDict") в качестве словаря.
* **Редакторы** - [kwrite](//www.kde.org/applications/utilities/kwrite/ "Домашняя страница Kwrite") в качестве легковесного редактора, [kate](//www.kde.org/applications/utilities/kate/ "Домашняя страница Kate") (с плагином [cpp-helper](//zaufi.github.io/kate-cpp-helper-plugin.html "Домашняя страница плагина")) для более суровых вещей. Ну и, конечно, vim для консоли.
* **Научный софт**. Визуализаторы химические - [vmd](//www.ks.uiuc.edu/Research/vmd/ "Домашняя страница VMD"), [chimera](//www.cgl.ucsf.edu/chimera/ "Домашняя страница Chimera") и [pymol](//pymol.org/ "Домашняя страница Pymol"). Физический симулятор [step](//kde.org/applications/education/step/ "Домашняя страница Step"). Калькулятор [kalgebra](//kde.org/applications/education/kalgebra/ "Домашняя страница Kalgebra") и консольный [ipython](//ipython.org/ "Домашняя страница ipython"). Рисовалка графиков и анализ [qtiplot](//qtiplot.com/ "Домашняя страница Qtiplot") (его форк scidavis, к сожалению, полумертв), только рисовалка - [grace](//plasma-gate.weizmann.ac.il/Grace/ "Домашняя страница Grace"). [Chemtool](//ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html "Домашняя страница Chemtool") в качестве замены ChemDraw.
* **Системное**. Файловый менеджер [dolphin](//kde.org/applications/system/dolphin/ "Домашняя страница Dolphin"), [doublecmd](//doublecmd.sourceforge.net/ "Домашняя страница Doublecmd") как двухпанельный менеджер. Эмуляторы терминала - [yakuake](//yakuake.kde.org/ "Домашняя страница Yakuake") и [urxvt](//software.schmorp.de/pkg/rxvt-unicode.html "Домашняя страница urxvt") в качестве оконного. Графический интерфейс для архиваторов [ark](//kde.org/applications/utilities/ark/ "Домашняя страница Ark").
* **Shell** - zshrc без вариантов. Некоторое описание моих настроек шелла могут
быть найдены [тут](/ru/2014/01/14/about-zshrc/ "Статья о zshrc"). Сами настройки
хранятся [тут](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc "Файл")
или [тут](//raw.githubusercontent.com/arcan1s/dotfiles/master/zshrc_server
"Файл").
* **DE** - KDE со всеми вытекающими (поэтому набор приложений, преимущественно,
Qt-based). Некоторые подробности приготовления KDE будут даны ниже.
* **Работа с изображениями** -
[gwenview](//kde.org/applications/graphics/gwenview/ "Домашняя страница
Gwenview") для просмотра и быстрого редактирования,
[kolourpaint](//kde.org/applications/graphics/kolourpaint/ "Домашняя страница
Kolourpaint") для простого редактирования стандартных форматов пиксельной
графики, [gimp](//www.gimp.org/ "Домашняя страница Gimp") (без плагинов, ибо не
было необходимости) для более сурового редактирования и
[inkskape](//www.inkscape.org/ "Домашняя страница Inkskape") для работы с
векторной графикой.
* **Браузер** - Firefox, ранее Qupzilla, еще ранее Opera. Некоторый набор
настроек Firefox будет дан ниже. Дополнительный браузер - Chromium. Консольный -
elinks.
* **IM клиент** - [qutIM](//qutim.org "Домашняя страница Qutim").
Кроссплатформенный, мультипротокольный, с необходимым набором фич.
[Kopete](//kde.org/applications/internet/kopete/ "Домашняя страница Kopete"),
который использовался ранее, часто падал, работал как хотел и вообще не дружил с
кодировкой. Раньше еще был какой то консольный, но сейчас его нет. Для таких
случаев предпочитаю использовать клиент с планшета. Skype для скайпа, очевидно.
* **Почтовый клиент** - [kmail](//kde.org/applications/internet/kmail/ "Домашняя
страница Kmail"). Много фич, большая часть из которых мною используется,
симпатично выглядит и удобный. Еще бы был DE-независимый, цены бы ему не было.
* **IRC клиент** - [konversation](//konversation.kde.org/ "Домашняя страница
Konversation"). Самый обычный IRC-клиент. Хотя, если мне не изменяет память,
qutIM тоже поддерживает IRC протокол, лично мне удобнее использовать отдельный
клиент для этого.
* **Torrent клиент** - [transmission](//www.transmissionbt.com/ "Домашняя
страница Transmission") с Qt5 интерфейсом (gtk тоже имеется). Для сервера он же,
но без GUI.
* **Видео плеер** - [mpv](//mpv.io/ "Домашняя страница mpv"). Mplayer умер, а
mplayer2 родился мертворожденным. Ах да, графические надстройки сверху ненужны.
* **Аудио плеер** - [qmmp](//qmmp.ylsoftware.com/ "Домашняя страница Qmmp").
Хороший, годный плеер с закосом под winamp. Легким движением руки делаем ему
человеческий интерфейс aka simpleui.
* **Работа с аудио/видео** -
[kdenlive](//kde-apps.org/content/show.php?content=29024 "Домашняя страница
kdenlive") для работы с видео,
[soundkonverter](//kde-apps.org/content/show.php?content=29024 "Домашняя
страница Soundkonverter") для работы с аудио,
[easytag](//wiki.gnome.org/Apps/EasyTAG "Домашняя страница Easytag") для работы
с аудио тегами (gtk, но зато единственный, чья функциональность меня устроила).
Ну и командная строка и небольшие скрипты на bash.
* **Офис** - [Kingsoft Office](//wps-community.org/ "Домашняя страница KO") в
качестве замены Microsoft Office; в общем то ничем не примечательный, разве что
не так ущербно смотрится, как стандартные офисы, Qt-based и, говорят, с хорошей
поддержкой стандартных форматов. Версия под линукс находится в состоянии альфы.
[Kile](//kile.sourceforge.net/ "Домашняя страница Kile") в качестве фронтенда к
LaTeX. [Okular](//kde.org/applications/graphics/okular/ "Домашняя страница
Okular"), как просмотрщик всего. [GoldenDict](//goldendict.org/ "Домашняя
страница GoldenDict") в качестве словаря.
* **Редакторы** - [kwrite](//www.kde.org/applications/utilities/kwrite/
"Домашняя страница Kwrite") в качестве легковесного редактора,
[kate](//www.kde.org/applications/utilities/kate/ "Домашняя страница Kate") (с
плагином [cpp-helper](//zaufi.github.io/kate-cpp-helper-plugin.html "Домашняя
страница плагина")) для более суровых вещей. Ну и, конечно, vim для консоли.
* **Научный софт**. Визуализаторы химические -
[vmd](//www.ks.uiuc.edu/Research/vmd/ "Домашняя страница VMD"),
[chimera](//www.cgl.ucsf.edu/chimera/ "Домашняя страница Chimera") и
[pymol](//pymol.org/ "Домашняя страница Pymol"). Физический симулятор
[step](//kde.org/applications/education/step/ "Домашняя страница Step").
Калькулятор [kalgebra](//kde.org/applications/education/kalgebra/ "Домашняя
страница Kalgebra") и консольный [ipython](//ipython.org/ "Домашняя страница
ipython"). Рисовалка графиков и анализ [qtiplot](//qtiplot.com/ "Домашняя
страница Qtiplot") (его форк scidavis, к сожалению, полумертв), только рисовалка -
[grace](//plasma-gate.weizmann.ac.il/Grace/ "Домашняя страница Grace").
[Chemtool](//ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html
"Домашняя страница Chemtool") в качестве замены ChemDraw.
* **Системное**. Файловый менеджер
[dolphin](//kde.org/applications/system/dolphin/ "Домашняя страница Dolphin"),
[doublecmd](//doublecmd.sourceforge.net/ "Домашняя страница Doublecmd") как
двухпанельный менеджер. Эмуляторы терминала - [yakuake](//yakuake.kde.org/
"Домашняя страница Yakuake") и
[urxvt](//software.schmorp.de/pkg/rxvt-unicode.html "Домашняя страница urxvt") в
качестве оконного. Графический интерфейс для архиваторов
[ark](//kde.org/applications/utilities/ark/ "Домашняя страница Ark").
## <a href="#kde" class="anchor" id="kde"><span class="octicon octicon-link"></span></a>Настройка KDE
@ -38,11 +104,27 @@ short: my-desktop
{% include prj_scr.html %}
</div>
В качестве стиля Qt используется QtCurve, настройки могут быть найдены [здесь](//github.com/arcan1s/dotfiles/tree/master/qtcurve "GitHub"), оформление окон оттуда же. Курсор [ecliz-small](//kde-look.org/content/show.php/Ecliz?content=110340 "Домашняя страница курсоров"). Тема плазмы [volatile](//kde-look.org/content/show.php/Volatile?content=128110 "Домашняя страница темы"). Значки [compass](//nitrux.in/ "Домашняя страница Nitrux"). Шрифты на базе Liberation.
В качестве стиля Qt используется QtCurve, настройки могут быть найдены
[здесь](//github.com/arcan1s/dotfiles/tree/master/qtcurve "GitHub"), оформление
окон оттуда же. Курсор
[ecliz-small](//kde-look.org/content/show.php/Ecliz?content=110340 "Домашняя
страница курсоров"). Тема плазмы
[volatile](//kde-look.org/content/show.php/Volatile?content=128110 "Домашняя
страница темы"). Значки [compass](//nitrux.in/ "Домашняя страница Nitrux").
Шрифты на базе Liberation.
**Используемые виджеты** (слева направо, сверху вниз): [menubar](//launchpad.net/plasma-widget-menubar "Домашняя страница виджета"), [homerun](//userbase.kde.org/Homerun "Домашняя страница виджета") с прозрачной иконкой, [icontask](//kde-apps.org/content/show.php?content=144808 "Домашняя страница виджета"), [netctl](/ru/projects/netctl-gui/ "Домашняя страница виджета"), стандартный трей от KDE, [colibri](//agateau.com/projects/colibri/ "Домашняя страница виджета") в качестве уведомлений, [Awesome Widgets](/ru/projects/awesome-widgets "Домашняя страница виджета").
**Используемые виджеты** (слева направо, сверху вниз):
[menubar](//launchpad.net/plasma-widget-menubar "Домашняя страница виджета"),
[homerun](//userbase.kde.org/Homerun "Домашняя страница виджета") с прозрачной
иконкой, [icontask](//kde-apps.org/content/show.php?content=144808 "Домашняя
страница виджета"), [netctl](/ru/projects/netctl-gui/ "Домашняя страница
виджета"), стандартный трей от KDE, [colibri](//agateau.com/projects/colibri/
"Домашняя страница виджета") в качестве уведомлений, [Awesome
Widgets](/ru/projects/awesome-widgets "Домашняя страница виджета").
В качестве бонусного материала - яркие цвета в консоли (для [konsole](//github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.colorscheme "GitHub")):
В качестве бонусного материала - яркие цвета в консоли (для
[konsole](//github.com/arcan1s/dotfiles/blob/master/themes/yakuake/My%20color.colorscheme
"GitHub")):
<div class="thumbnails">
{% assign scrdesc = "Как оно выглядит" %}
@ -50,27 +132,32 @@ short: my-desktop
{% include prj_scr.html %}
</div>
## <a href="#firefox" class="anchor" id="firefox"><span class="octicon octicon-link"></span></a>Настройка Firefox
В самих настройках ничего интересного нет, я просто напишу список аддонов. Дико радует, что для того, чтобы интерфейс был минималистичным (и удобным), нужно поставить кучу плагинов.
В самих настройках ничего интересного нет, я просто напишу список аддонов. Дико
радует, что для того, чтобы интерфейс был минималистичным (и удобным), нужно
поставить кучу плагинов.
* **Adblock plus** - куда же без него.
* **Add to search bar** - для кастомных поисков.
* **Auto Refresh** - автоматическое обновление страниц.
* **Clone tab** - добавляет функцию "Дублировать вкладку".
* **Close tab by double click** - понятно, короче.
* **New scrollbars** используется для кастомизации скроллбаров, потому что оригинальные смотрятся ущербно в Qt окружении.
* **New scrollbars** используется для кастомизации скроллбаров, потому что
оригинальные смотрятся ущербно в Qt окружении.
* **NoScript** используется, например, для I2P и Tor.
* **PrivateTab** - добавляет приватную вкладку (а не окно).
* **Proxy Selector** добавляет возможность использовать несколько прокси-серверов.
* **Proxy Selector** добавляет возможность использовать несколько
прокси-серверов.
* **QuickJava** используется примерно с той же целью, что и NoScript.
* **RSS иконка в строке адреса** - очевидно.
* **Словари для проверки орфографии** (eng/rus).
* **Space Next** - на нажатие на пробел внизу страницы реагирует, как на нажатие кнопки "Далее".
* **Space Next** - на нажатие на пробел внизу страницы реагирует, как на нажатие
кнопки "Далее".
* **Speed Dial** - простая экспресс-панель.
* **Status-4-Evar** - нормальная строка состояния.
* **tab delabelifier** - сворачивает неиспользуемые вкладки.
* **Tab Scope + Tab Scope Tweaker** - всплывающая подсказка у вкладок.
* **accessKey** - пока не работает. Вообще служит для удобной навигации (opera-like) с клавиатуры.
* **accessKey** - пока не работает. Вообще служит для удобной навигации
(opera-like) с клавиатуры.
* **FXOpera** - нормальный минималистичный вид.

View File

@ -7,23 +7,35 @@ tags: linux, archlinux, сборка
title: Отключение baloo, gentoo-way
short: disabling-baloo
---
Пока ононимные онолитеги ЛОР'а ноют на тему baloo, я предпочел потратить 15 минут на то, чтобы отвязать приложения от этого чуда человеческой мысли.
Пока ононимные онолитеги ЛОР'а ноют на тему baloo, я предпочел потратить 15 минут
на то, чтобы отвязать приложения от этого чуда человеческой мысли.
<!--more-->
## <a href="#disclaimer" class="anchor" id="disclaimer"><span class="octicon octicon-link"></span></a>Дисклеймер
Сам этим я не пользуюсь, поскольку предпочитаю менее деструктивные методы. Однако, судя по всему, все работает без проблем, поскольку жалоб нет. Так как патч делался действительно за несколько минут, то он просто выкорчевывает все вызовы baloo из исходников (возможно, когда-нибудь я сделаю нормальный патч).
Сам этим я не пользуюсь, поскольку предпочитаю менее деструктивные методы. Однако,
судя по всему, все работает без проблем, поскольку жалоб нет. Так как патч
делался действительно за несколько минут, то он просто выкорчевывает все вызовы
baloo из исходников (возможно, когда-нибудь я сделаю нормальный патч).
С другой стороны, я настоятельно рекомендую людям, которым по каким-либо причинам baloo не нужен, отключить его из меню настроек (добавили пункт в 4.13.1), либо воспользоваться этой [статьей](//blog.andreascarpino.it/disabling-baloo-the-arch-way/ "Блог Скарпино").
С другой стороны, я настоятельно рекомендую людям, которым по каким-либо причинам
baloo не нужен, отключить его из меню настроек (добавили пункт в 4.13.1), либо
воспользоваться этой [статьей](//blog.andreascarpino.it/disabling-baloo-the-arch-way/
"Блог Скарпино").
## <a href="#intro" class="anchor" id="intro"><span class="octicon octicon-link"></span></a>Введение
В Archlinux, на текущий момент (2014-05-18) от baloo, помимо **baloo-widgets**, зависит **gwenview** и **kdepim**. В версии 4.13.0, почему то, **kactivities** тоже зависел от baloo, однако, эта зависимость не требовалась явно (таким образом, достаточно было просто пересобрать его, удалив baloo из списка зависимостей).
В Archlinux, на текущий момент (2014-05-18) от baloo, помимо **baloo-widgets**,
зависит **gwenview** и **kdepim**. В версии 4.13.0, почему то, **kactivities**
тоже зависел от baloo, однако, эта зависимость не требовалась явно (таким
образом, достаточно было просто пересобрать его, удалив baloo из списка
зависимостей).
## <a href="#gwenview" class="anchor" id="gwenview"><span class="octicon octicon-link"></span></a>gwenview
Тут все довольно просто. Разработчики сами позаботились за нас о возможных пожеланиях простых пользователей и добавили специальный флаг:
Тут все довольно просто. Разработчики сами позаботились за нас о возможных
пожеланиях простых пользователей и добавили специальный флаг:
```cmake
//Semantic info backend for Gwenview (Baloo/Fake/None)
@ -41,8 +53,17 @@ cmake ../gwenview-${pkgver} \
## <a href="#kdepim" class="anchor" id="kdepim"><span class="octicon octicon-link"></span></a>kdepim
Так как делалось все на скорую руку, то я предпочел пробежаться по исходникам с помощью grep и найти все упоминания baloo. Нужные строки (а это указания на baloo в файлах CMakeLists.txt, вызовы функций из его библиотек, объявления заголовочных файлов) просто закомментировал (в исходном коде местами пришлось добавить фейковые вызовы). Патч полностью здесь приводить не буду (он, к тому же, немного большой), а дам [ссылку на него](//gist.github.com/arcan1s/b698bb586faef627b3bb "Gist") (4.13.3). Далее просто требуется применить этот патч к исходникам и пересобрать kdepim.
Так как делалось все на скорую руку, то я предпочел пробежаться по исходникам с
помощью grep и найти все упоминания baloo. Нужные строки (а это указания на
baloo в файлах CMakeLists.txt, вызовы функций из его библиотек, объявления
заголовочных файлов) просто закомментировал (в исходном коде местами пришлось
добавить фейковые вызовы). Патч полностью здесь приводить не буду (он, к тому же,
немного большой), а дам [ссылку на него](//gist.github.com/arcan1s/b698bb586faef627b3bb
"Gist") (4.13.3). Далее просто требуется применить этот патч к исходникам и
пересобрать kdepim.
## <a href="#packages" class="anchor" id="packages"><span class="octicon octicon-link"></span></a>Пакеты
Все пакеты для Archlinux для обеих архитектур доступны [в моем репозитории](//wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo "ArchWiki").
Все пакеты для Archlinux для обеих архитектур доступны [в моем репозитории]
(//wiki.archlinux.org/index.php/Unofficial_user_repositories#arcanisrepo
"ArchWiki").

View File

@ -7,30 +7,69 @@ tags: archlinux
title: Немного об Arch User Repository
short: about-aur
---
Статья посвященная работе с пользовательским репозиторием Archlinux. Постарался сделать акцент на сопровождении пакетов. Данная статья, в большей степени, представляет собой компиляцию нескольких англоязычных статей Wiki и немного личного опыта. Поэтому не уверен, что в данной статье на английском языке будет толк.
Статья посвященная работе с пользовательским репозиторием Archlinux. Постарался
сделать акцент на сопровождении пакетов. Данная статья, в большей степени,
представляет собой компиляцию нескольких англоязычных статей Wiki и немного
личного опыта. Поэтому не уверен, что в данной статье на английском языке будет
толк.
<!--more-->
## <a href="#aur" class="anchor" id="aur"><span class="octicon octicon-link"></span></a>AUR
Итак, [Arch User Repository](//aur.archlinux.org/ "AUR") (AUR или АУР) - это репозиторий, поддерживаемый и развиваемый практически исключительно сообществом Archlinux. Есть еще отдельные люди, называемые [доверенными пользователями](//www.archlinux.org/trustedusers/ "Доверенные пользователи") (TU), на плечах которых лежит своеобразная "модерация" этого репозитория. На мой скромный взгляд, едва ли не единственное отличие Archlinux от других дистрибутивов - это наличие AUR'а. Отличие этого репозитория от обычных прежде всего в том, что он **не содержит** архивов с исходниками или собранных пакетов - только скрипт сборки (PKGBUILD) и, возможно, дополнительные текстовые файлы.
Итак, [Arch User Repository](//aur.archlinux.org/ "AUR") (AUR или АУР) - это
репозиторий, поддерживаемый и развиваемый практически исключительно сообществом
Archlinux. Есть еще отдельные люди, называемые [доверенными
пользователями](//www.archlinux.org/trustedusers/ "Доверенные пользователи")
(TU), на плечах которых лежит своеобразная "модерация" этого репозитория. На мой
скромный взгляд, едва ли не единственное отличие Archlinux от других
дистрибутивов - это наличие AUR'а. Отличие этого репозитория от обычных прежде
всего в том, что он **не содержит** архивов с исходниками или собранных пакетов
- только скрипт сборки (PKGBUILD) и, возможно, дополнительные текстовые файлы.
Конечно, вручную скачивать архив с сайта AUR'а, а также проверять обновления, не совсем удобно, поэтому существует [набор хелперов](//wiki.archlinux.org/index.php/AUR_Helpers "ArchWiki"). Большинство хелперов представляет собой обертку над pacman. Я выделю только два - [packer](//aur.archlinux.org/packages/packer/ "AUR") - минималистичный, удобный, быстрый - и [yaourt](//aur.archlinux.org/packages/yaourt/ "AUR") - на шелле, но зато более функциональный. По не особо понятным мне причинам, в русскоязычном сегменте большее распространение получил yaourt, зарубежом - packer.
Конечно, вручную скачивать архив с сайта AUR'а, а также проверять обновления, не
совсем удобно, поэтому существует [набор
хелперов](//wiki.archlinux.org/index.php/AUR_Helpers "ArchWiki"). Большинство
хелперов представляет собой обертку над pacman. Я выделю только два -
[packer](//aur.archlinux.org/packages/packer/ "AUR") - минималистичный, удобный,
быстрый - и [yaourt](//aur.archlinux.org/packages/yaourt/ "AUR") - на шелле, но
зато более функциональный. По не особо понятным мне причинам, в русскоязычном
сегменте большее распространение получил yaourt, зарубежом - packer.
Помимо хелперов, существуют также консольные клиенты для работы с AUR. Я выделю, пожалуй, только один - [python-aur](//aur.archlinux.org/packages/python3-aur/ "AUR"). Иногда удобная альтернатива веб-интерфейсу.
Помимо хелперов, существуют также консольные клиенты для работы с AUR. Я выделю,
пожалуй, только один - [python-aur](//aur.archlinux.org/packages/python3-aur/
"AUR"). Иногда удобная альтернатива веб-интерфейсу.
Другая особенность данного репозитория - и не менее важная - **все действия с ним осуществляются на свой страх и риск**. Опасные и некорректные пакеты, конечно же, удаляются, но вполне могут быть и ошибки при сборке и еще все, что сможете придумать. Дык вот - работа с ним на вашей совести, и никто вам ничем не обязан, если что-то сломается. По этой же причине, ни один хелпер в обозримом будущем не будет перенесен в официальные репозитории.
Другая особенность данного репозитория - и не менее важная - **все действия с
ним осуществляются на свой страх и риск**. Опасные и некорректные пакеты,
конечно же, удаляются, но вполне могут быть и ошибки при сборке и еще все, что
сможете придумать. Дык вот - работа с ним на вашей совести, и никто вам ничем не
обязан, если что-то сломается. По этой же причине, ни один хелпер в обозримом
будущем не будет перенесен в официальные репозитории.
У пакетов в AUR есть несколько характеристик, которых нет у пакетов в официальных репозиториях:
У пакетов в AUR есть несколько характеристик, которых нет у пакетов в
официальных репозиториях:
* группа - скорее для удобства поиска, сортировки. Немного помогает доверенным пользователям.
* автор, мейнтейнер, последний приславший - люди, кто, соответственно, первый раз прислал данный пакет, сопровождает его в настоящий момент, и последний прислал.
* голоса - когда кому-либо понравился этот пакет или он находит его полезным, он голосует. Теоретически, пакеты, имеющие больше 10 голосов могут попасть в официальные репозитории (если найдется желающий среди доверенных пользователей). Другой путь в официальные репозитории - попасть в [список часто используемых](//www.archlinux.de/?page=PackageStatistics "Статистика"), но вы же не пользуетесь [pkgstats](//www.archlinux.org/packages/pkgstats "Пакет Archlinux").
* группа - скорее для удобства поиска, сортировки. Немного помогает доверенным
пользователям.
* автор, мейнтейнер, последний приславший - люди, кто, соответственно, первый
раз прислал данный пакет, сопровождает его в настоящий момент, и последний
прислал.
* голоса - когда кому-либо понравился этот пакет или он находит его полезным, он
голосует. Теоретически, пакеты, имеющие больше 10 голосов могут попасть в
официальные репозитории (если найдется желающий среди доверенных пользователей).
Другой путь в официальные репозитории - попасть в [список часто
используемых](//www.archlinux.de/?page=PackageStatistics "Статистика"), но вы же
не пользуетесь [pkgstats](//www.archlinux.org/packages/pkgstats "Пакет
Archlinux").
## <a href="#install-from-aur" class="anchor" id="install-from-aur"><span class="octicon octicon-link"></span></a>Установка с AUR
Для работы с AUR требуется установить группу пакетов [base-devel](//www.archlinux.org/groups/x86_64/base-devel/ "Группа пакетов Archlinux"). Пакеты с этой группы, как правило, **не включены** в зависимости. Рекомендуемая установка пакетов с AUR выглядит примерно так:
Для работы с AUR требуется установить группу пакетов
[base-devel](//www.archlinux.org/groups/x86_64/base-devel/ "Группа пакетов
Archlinux"). Пакеты с этой группы, как правило, **не включены** в зависимости.
Рекомендуемая установка пакетов с AUR выглядит примерно так:
```bash
# скачать архив с PKGBUILD'ом c AUR
@ -49,80 +88,193 @@ pacman -U foo-0.1-1-i686.pkg.tar.xz
## <a href="#upload-to-aur" class="anchor" id="upload-to-aur"><span class="octicon octicon-link"></span></a>Загрузка пакета в AUR
**Никаких** `makepkg -S`. С недавних пор данный метод считается устаревшим. Но обо всем по-порядку
**Никаких** `makepkg -S`. С недавних пор данный метод считается устаревшим. Но
обо всем по-порядку
Нам нужно загрузить архив на сайт. В этом архиве **должны быть** PKGBUILD и .AURINFO. По поводу первого я расскажу еще чуть ниже, второй генерируется автоматически. Также, там могут быть установочные скрипты (*.install), патчи, файлы лицензии (если не предоставляются апстримом с исходниками), сервисы systemd, скрипты запуска - это то, что обычно включено. **Никаких исходников**. И тем более **никаких бинарников**. (Шутки-шутками, а я помню пакет, в котором исходный код записывался с помощью `cat << EOF` прямо в тексте PKGBUILD'а.)
Нам нужно загрузить архив на сайт. В этом архиве **должны быть** PKGBUILD и
.AURINFO. По поводу первого я расскажу еще чуть ниже, второй генерируется
автоматически. Также, там могут быть установочные скрипты (\*.install), патчи,
файлы лицензии (если не предоставляются апстримом с исходниками), сервисы
systemd, скрипты запуска - это то, что обычно включено. **Никаких исходников**.
И тем более **никаких бинарников**. (Шутки-шутками, а я помню пакет, в котором
исходный код записывался с помощью `cat << EOF` прямо в тексте PKGBUILD'а.)
Все файлы кладем в одну директорию. Убедились, что install файл, если он есть, указан в переменной install, все другие исходные файлы указаны в массиве source, а хэш-суммы правильные (их легко можно сгенерировать, набрав `makepkg -g`). Далее из этой директории запустить команду `mkaurball` (пакет [pkgbuild-introspection](//www.archlinux.org/packages/pkgbuild-introspection "Пакет Archlinux")) - и архив готов.
Все файлы кладем в одну директорию. Убедились, что install файл, если он есть,
указан в переменной install, все другие исходные файлы указаны в массиве source,
а хэш-суммы правильные (их легко можно сгенерировать, набрав `makepkg -g`).
Далее из этой директории запустить команду `mkaurball` (пакет
[pkgbuild-introspection](//www.archlinux.org/packages/pkgbuild-introspection
"Пакет Archlinux")) - и архив готов.
Несколько правил загрузки пакета в AUR:
* Если такой пакет существует в официальном репозитории (любой версии), то **не нужно** заливать новый пакет. Если репозиторный пакет устарел, просто пометьте его, как устаревший. Исключение из этого правила составляют пакеты из системы контрля версий (VCS), о них чуть ниже.
* Проверьте AUR. Если такой пакет уже существует и у него есть мейнтейнер, вы **не сможете залить** свой пакет. Если у него нет мейнтейнера, то вы автоматически будете его сопровождающим после обновления. Еще может быть такой же пакет, но с другим названием, будьте внимательны.
* PKGBUILD должен следовать (более-менее) стандартам и должен быть более-менее аккуратным. В противном случае, пакет может быть удален без предупреждения.
* Если такой пакет существует в официальном репозитории (любой версии), то **не
нужно** заливать новый пакет. Если репозиторный пакет устарел, просто пометьте
его, как устаревший. Исключение из этого правила составляют пакеты из системы
контрля версий (VCS), о них чуть ниже.
* Проверьте AUR. Если такой пакет уже существует и у него есть мейнтейнер, вы
**не сможете залить** свой пакет. Если у него нет мейнтейнера, то вы
автоматически будете его сопровождающим после обновления. Еще может быть такой
же пакет, но с другим названием, будьте внимательны.
* PKGBUILD должен следовать (более-менее) стандартам и должен быть более-менее
аккуратным. В противном случае, пакет может быть удален без предупреждения.
* Пакет должен быть полезен еще кому-либо кроме Вас =)
* Рекомендуется проверить **собранный пакет и PKGBUILD** с помощью [namcap](//www.archlinux.org/packages/namcap "Пакет Archlinux"). Это не даст 100% гарантии, но на основные ошибки укажет.
* Рекомендуется проверить **собранный пакет и PKGBUILD** с помощью
[namcap](//www.archlinux.org/packages/namcap "Пакет Archlinux"). Это не даст
100% гарантии, но на основные ошибки укажет.
## <a href="#maintaining" class="anchor" id="maintaining"><span class="octicon octicon-link"></span></a>Сопровождение пакетов
Если вы сопровождаете пакет и хотите его обновить, просто загрузите обновленный пакет еще раз. Читайте - и, по возможности, отвечайте - комментарии к вашему пакету, там иногда могут быть очень полезные замечания или дельные предложения. Если вы не хотите сопровождать больше ваш пакет (или нет времени), то, пожалуйста, нажмите на кнопку справа (бросить/disown), чтобы те, кто в нем заинтересован, смогли поддерживать его. Если есть пакет, который не имеет сопровождающего, и вы хотели бы им стать, вы также можете нажать на соответствующую кнопку справа в веб-интерфейсе =)
Если вы сопровождаете пакет и хотите его обновить, просто загрузите обновленный
пакет еще раз. Читайте - и, по возможности, отвечайте - комментарии к вашему
пакету, там иногда могут быть очень полезные замечания или дельные предложения.
Если вы не хотите сопровождать больше ваш пакет (или нет времени), то,
пожалуйста, нажмите на кнопку справа (бросить/disown), чтобы те, кто в нем
заинтересован, смогли поддерживать его. Если есть пакет, который не имеет
сопровождающего, и вы хотели бы им стать, вы также можете нажать на
соответствующую кнопку справа в веб-интерфейсе =)
## <a href="#aur-list" class="anchor" id="aur-list"><span class="octicon octicon-link"></span></a>Список рассылки AUR
По любому вопросу, связанному с работой AUR вы всегда можете обратиться в [список рассылки](//mailman.archlinux.org/mailman/listinfo/aur-general "Список рассылки") [aur-general (at) archlinux (dot) org](mailto:aur-general@archlinux.org "email"). На ваш вопрос ответят, вероятно, достаточно быстро; причем, ответить могут не только обычные пользователи, но и доверенные пользователи. Также, если вы вдруг неуверены в своем PKGBUILD'е, вы тоже можете всегда обратиться в список рассылки и показать свой PKGBUILD.
По любому вопросу, связанному с работой AUR вы всегда можете обратиться в
[список рассылки](//mailman.archlinux.org/mailman/listinfo/aur-general "Список
рассылки") [aur-general (at) archlinux (dot)
org](mailto:aur-general@archlinux.org "email"). На ваш вопрос ответят, вероятно,
достаточно быстро; причем, ответить могут не только обычные пользователи, но и
доверенные пользователи. Также, если вы вдруг неуверены в своем PKGBUILD'е, вы
тоже можете всегда обратиться в список рассылки и показать свой PKGBUILD.
Существует также отдельный список [рассылки для запросов](//mailman.archlinux.org/mailman/listinfo/aur-requests "Список рассылки") [aur-requests (at) archlinux (dot) org](mailto:aur-requests@archlinux.org "email"). На текущий момент (AUR 3.2.0) общение через данный список рассылки напрямую не рекомендуется - все обычные запросы должны отсылаться с использованием веб-интерфейса ([подробности](//mailman.archlinux.org/pipermail/aur-general/2014-July/029045.html "Тред")). Запросы, которые вы можете послать:
Существует также отдельный список [рассылки для
запросов](//mailman.archlinux.org/mailman/listinfo/aur-requests "Список
рассылки") [aur-requests (at) archlinux (dot)
org](mailto:aur-requests@archlinux.org "email"). На текущий момент (AUR 3.2.0)
общение через данный список рассылки напрямую не рекомендуется - все обычные
запросы должны отсылаться с использованием веб-интерфейса
([подробности](//mailman.archlinux.org/pipermail/aur-general/2014-July/029045.html
"Тред")). Запросы, которые вы можете послать:
* **Удаление пакета**. Запрос должен включать **краткое описание причины**, почему вы его хотите удалить. Обычные причины - специальный патч, который больше не нужен; пакет уныл и более не поддерживается апстримом; переименование; функциональность предоставляется другим пакетом.
* **"Бросить пакет"**. Лишить текущего мейнтейнера права сопровождать данный пакет. Официальное требование - вы должны связаться до этого с мейнтейнером по e-mail и **ожидать от него ответа в течение двух недель** (теперь это делается автоматически при отправке запроса через веб-интерфейс). Однако, если мейнтейнер неактивен в течение длительного времени, или пакет помечен, как устаревший, в течение длительного времени, то можно сделать исключение из этого правила. (Например, если пакет отмечен устаревшим более шести месяцев, то запрос удовлетворяется автоматически.)
* **Объединение пакетов**. Если пакет подлежит удалению, но имеет голоса (или важные комментарии), то его можно объединить с другим, который предоставляет то же самое. Частный случай - это аналогично переименованию пакета из одного в другой.
* **Удаление пакета**. Запрос должен включать **краткое описание причины**,
почему вы его хотите удалить. Обычные причины - специальный патч, который больше
не нужен; пакет уныл и более не поддерживается апстримом; переименование;
функциональность предоставляется другим пакетом.
* **"Бросить пакет"**. Лишить текущего мейнтейнера права сопровождать данный
пакет. Официальное требование - вы должны связаться до этого с мейнтейнером по
e-mail и **ожидать от него ответа в течение двух недель** (теперь это делается
автоматически при отправке запроса через веб-интерфейс). Однако, если мейнтейнер
неактивен в течение длительного времени, или пакет помечен, как устаревший, в
течение длительного времени, то можно сделать исключение из этого правила.
(Например, если пакет отмечен устаревшим более шести месяцев, то запрос
удовлетворяется автоматически.)
* **Объединение пакетов**. Если пакет подлежит удалению, но имеет голоса (или
важные комментарии), то его можно объединить с другим, который предоставляет то
же самое. Частный случай - это аналогично переименованию пакета из одного в
другой.
Пожалуйста, пишите письма в список рассылки аккуратно. И, желательно, вежливо (а то потом будете генерировать что-то вроде [такого](//linux.sytes.net/post/2014/05/aur-driven-by-idiots/ "Блог")) (мы все знаем, что мы арче-школьники, не надо нас еще раз этим тыкать, мы обидимся). Также старайтесь избегать избыточного цитирования. И - это практически требование - предоставляйте ссылки на пакеты. Хороший вариант - составление списка ссылок в конце письма, а в теле ссылаться на них таким образом `[1]`. Если не уверены в корректности запроса - посмотрите [архив списка рассылки](//mailman.archlinux.org/pipermail/aur-requests/ "Список рассылки").
Пожалуйста, пишите письма в список рассылки аккуратно. И, желательно, вежливо (а
то потом будете генерировать что-то вроде
[такого](//linux.sytes.net/post/2014/05/aur-driven-by-idiots/ "Блог")) (мы все
знаем, что мы арче-школьники, не надо нас еще раз этим тыкать, мы обидимся).
Также старайтесь избегать избыточного цитирования. И - это практически
требование - предоставляйте ссылки на пакеты. Хороший вариант - составление
списка ссылок в конце письма, а в теле ссылаться на них таким образом `[1]`.
Если не уверены в корректности запроса - посмотрите [архив списка
рассылки](//mailman.archlinux.org/pipermail/aur-requests/ "Список рассылки").
## <a href="#pkgbuild" class="anchor" id="pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD
PKGBUILD - это, де-факто, сценарий шелла, указывающий как и почему (в смысле, зачем) собираться пакету. Он имеет 4 части:
PKGBUILD - это, де-факто, сценарий шелла, указывающий как и почему (в смысле,
зачем) собираться пакету. Он имеет 4 части:
* **Объявление основных переменных**. Об этом я расскажу чуть ниже.
* **Подготовка исходников**. Этот пункт необязательный. Включает в себя копирование (если вдруг нужно), применение патчей, sed и прочие мелочи. Функция обозначается, как **prepare()**.
* **Сборка**. Также необязательный пункт. Здесь - и только здесь - должна проводиться компиляция. Функция обозначается, как **build()**.
* **Установка**. Обязательный пункт. Здесь происходит копирование нужных файлов в указанный корень (`$pkgdir`). Функция обозначается, как **package()** (для совмещенных пакетов таких функций несколько и они называются примерно так: **package_$pkgname()**).
* **Подготовка исходников**. Этот пункт необязательный. Включает в себя
копирование (если вдруг нужно), применение патчей, sed и прочие мелочи. Функция
обозначается, как **prepare()**.
* **Сборка**. Также необязательный пункт. Здесь - и только здесь - должна
проводиться компиляция. Функция обозначается, как **build()**.
* **Установка**. Обязательный пункт. Здесь происходит копирование нужных файлов
в указанный корень (`$pkgdir`). Функция обозначается, как **package()** (для
совмещенных пакетов таких функций несколько и они называются примерно так:
**package_$pkgname()**).
### <a href="#pkgbuild-vars" class="anchor" id="pkgbuild-vars"><span class="octicon octicon-link"></span></a>Переменные PKGBUILD
Основные переменные следующие:
* **pkgbase** - группа пакетов. Например, пакеты `python-pyqt4` и `python2-pyqt4` имеют одну группу `pyqt4`.
* **pkgname** - имя (или массив имен для совмещенных пакетов) пакета; обязательная переменная.
* **pkgver** - версия пакета, указанная в апстриме, **pkgrel** - арче-специфичный релиз пакета.
* **pkgbase** - группа пакетов. Например, пакеты `python-pyqt4` и
`python2-pyqt4` имеют одну группу `pyqt4`.
* **pkgname** - имя (или массив имен для совмещенных пакетов) пакета;
обязательная переменная.
* **pkgver** - версия пакета, указанная в апстриме, **pkgrel** -
арче-специфичный релиз пакета.
* **pkgdesc** - краткое описание пакета.
* **arch** - массив архитектур. Как правило, `arch=('i686' 'x86_64')` для бинарных пакетов (очень-очень редко бывают пакеты, которые предоставляются только для одной архитектуры) и `arch=('any')` для пакетов, не содержащих бинарные файлы.
* **arch** - массив архитектур. Как правило, `arch=('i686' 'x86_64')` для
бинарных пакетов (очень-очень редко бывают пакеты, которые предоставляются
только для одной архитектуры) и `arch=('any')` для пакетов, не содержащих
бинарные файлы.
* **url** - адрес апстрима.
* **license** - лицензия. Если лицензия отлична от обычных (распространенные типы MIT, BSD и custom) - смотри пакет [core/licenses](//www.archlinux.org/packages/core/any/licenses/ "Пакет Archlinux") - то ее надо установить вместе с пакетом по пути `/usr/share/licenses/$pkgname/LICENSE`).
* **depends** - массив зависимостей, **необходимых для работы** пакета. **optdepends** - это **дополнительные зависимости**, которые не необходимы для работы, но предоставляют дополнительную функциональность. **makedepends** - это зависимости, которые не включены в **depends**, но **необходимы при сборке** пакета. Лучший способ проверить, правильно ли указаны зависимости сборки (зачастую, это самое важное) - попробуйте собрать пакет в чистом окружении (то есть совсем совсем чистом). И да, зависимости из группы [base-devel](//www.archlinux.org/groups/x86_64/base-devel/ "Группа пакетов Archlinux") указывать не надо.
* Следующие три переменные необязательны. **provides** - список пакетов, функциональность которых предоставляет данный пакет. **replaces** - список пакетов, которые данный пакет замещает (обычно используется для решения проблем с переименованием пакетов при обновлении). **conflicts** - список пакетов, с которым конфликтует данный пакет (имеет такие же файлы). Пример различия **provides** и **replaces** - [gvim](//www.archlinux.org/packages/gvim/ "Пакет Archlinux") предоставляет [vim](//www.archlinux.org/packages/vim/ "Пакет Archlinux"), а [wireshark-gtk](//www.archlinux.org/packages/wireshark-gtk/ "Пакет Archlinux") замещает wireshark.
* **install** - файл, содержащий сценарии, запускающиеся после установки/удаления/обновления (смотрите файл `/usr/share/pacman/proto.install`).
* **source** - где брать исходники, файлы предоставляемые вместе с пакетом указываются только по имени, к данному массиму также прилагается массив хэш сумм (md5sums/sha1sums/sha256sums/sha384sums/sha512sums).
* **license** - лицензия. Если лицензия отлична от обычных (распространенные
типы MIT, BSD и custom) - смотри пакет
[core/licenses](//www.archlinux.org/packages/core/any/licenses/ "Пакет
Archlinux") - то ее надо установить вместе с пакетом по пути
`/usr/share/licenses/$pkgname/LICENSE`).
* **depends** - массив зависимостей, **необходимых для работы** пакета.
**optdepends** - это **дополнительные зависимости**, которые не необходимы для
работы, но предоставляют дополнительную функциональность. **makedepends** - это
зависимости, которые не включены в **depends**, но **необходимы при сборке**
пакета. Лучший способ проверить, правильно ли указаны зависимости сборки
(зачастую, это самое важное) - попробуйте собрать пакет в чистом окружении (то
есть совсем совсем чистом). И да, зависимости из группы
[base-devel](//www.archlinux.org/groups/x86_64/base-devel/ "Группа пакетов
Archlinux") указывать не надо.
* Следующие три переменные необязательны. **provides** - список пакетов,
функциональность которых предоставляет данный пакет. **replaces** - список
пакетов, которые данный пакет замещает (обычно используется для решения проблем
с переименованием пакетов при обновлении). **conflicts** - список пакетов, с
которым конфликтует данный пакет (имеет такие же файлы). Пример различия
**provides** и **replaces** - [gvim](//www.archlinux.org/packages/gvim/ "Пакет
Archlinux") предоставляет [vim](//www.archlinux.org/packages/vim/ "Пакет
Archlinux"), а [wireshark-gtk](//www.archlinux.org/packages/wireshark-gtk/
"Пакет Archlinux") замещает wireshark.
* **install** - файл, содержащий сценарии, запускающиеся после
установки/удаления/обновления (смотрите файл `/usr/share/pacman/proto.install`).
* **source** - где брать исходники, файлы предоставляемые вместе с пакетом
указываются только по имени, к данному массиму также прилагается массив хэш сумм
(md5sums/sha1sums/sha256sums/sha384sums/sha512sums).
Все перечисленные выше переменные указываются в заголовке PKGBUILD. К ним также можно обращаться внутри PKGBUILD'а. Дополнительно стоит упомянуть переменные **startdir** - директория, откуда запускается makepkg, **srcdir** - директория с исходниками (`$startdir/src` по умолчанию), **pkgdir** - директория с собранным пакетом (`$startdir/pkg/$pkgname` по умолчанию). **Не используйте** переменную **startdir** без крайней необходимости.
Все перечисленные выше переменные указываются в заголовке PKGBUILD. К ним также
можно обращаться внутри PKGBUILD'а. Дополнительно стоит упомянуть переменные
**startdir** - директория, откуда запускается makepkg, **srcdir** - директория с
исходниками (`$startdir/src` по умолчанию), **pkgdir** - директория с собранным
пакетом (`$startdir/pkg/$pkgname` по умолчанию). **Не используйте** переменную
**startdir** без крайней необходимости.
### <a href="#pkgbuild-features" class="anchor" id="pkgbuild-features"><span class="octicon octicon-link"></span></a>Некоторые особенности PKGBUILD'ов
К PKGBUILD применимы все правила программирования на шелле. Например, "смешная шутка":
К PKGBUILD применимы все правила программирования на шелле. Например, "смешная
шутка":
```bash
pkgdir="/usr pkg"
rm -rf $pkgdir
```
кому-то может показаться не очень смешной, увы. Поэтому все пути (да и вообще переменные - там где надо, конечно) лучше обрамлять в двойные кавычки (исключение - условия в двойных квадратных скобках `[[ ... ]]`). Если вы вводите какие-либо свои переменные, то настоятельно рекоммендуется добавить в начале подчеркивание `_` во избежание перекрытия переменными makepkg.
кому-то может показаться не очень смешной, увы. Поэтому все пути (да и вообще
переменные - там где надо, конечно) лучше обрамлять в двойные кавычки
(исключение - условия в двойных квадратных скобках `[[ ... ]]`). Если вы вводите
какие-либо свои переменные, то настоятельно рекоммендуется добавить в начале
подчеркивание `_` во избежание перекрытия переменными makepkg.
В русскоязычном сегменте до сих пор зачастую встречаются строки типа `make || return 1`. Дык вот, `return 1` теперь уже давно как не нужен.
В русскоязычном сегменте до сих пор зачастую встречаются строки типа `make ||
return 1`. Дык вот, `return 1` теперь уже давно как не нужен.
Еще можно работать с рядом других переменных, определенных makepkg. Их список можно глянуть в `/etc/makepkg.conf`. Самые ходовые - флаги компиляции и `CARCH`. Так, например, если вы собираете пакет, исходники к которому предоставляются в бинарном виде (проприетарный драйвер, например), то кусок PKGBUILD может выглядеть так:
Еще можно работать с рядом других переменных, определенных makepkg. Их список
можно глянуть в `/etc/makepkg.conf`. Самые ходовые - флаги компиляции и `CARCH`.
Так, например, если вы собираете пакет, исходники к которому предоставляются в
бинарном виде (проприетарный драйвер, например), то кусок PKGBUILD может
выглядеть так:
```bash
if [ "${CARCH}" == "x86_64" ]; then
@ -135,9 +287,19 @@ fi
source=(${pkgname}-${pkgver}.tar.gz:://istodo.ru/distribs/${pkgname}-linux-${pkgver}-${_filearch}.tar.gz)
```
**pkgbase** вообще удобная штука. Например, для создания пакетов одновременно для двух версий Python PKGBUILD может выглядеть [примерно так](//projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/python-biopython "Archlinux svn"). Или, в общем случае, [как-то так](//aur.archlinux.org/packages/ne/netctl-gui/PKGBUILD "AUR").
**pkgbase** вообще удобная штука. Например, для создания пакетов одновременно
для двух версий Python PKGBUILD может выглядеть [примерно так]
(//projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/python-biopython
"Archlinux svn"). Или, в общем случае, [как-то так]
(//aur.archlinux.org/packages/ne/netctl-gui/PKGBUILD "AUR").
Вообще говоря, для стандартных случаев существуют прототипы PKGBUILD'ов. Их можно найти в `/usr/share/pacman/`, хотя местами они могли немного устареть (больше года как). Так, прототипы для пакетов из системы контроля версий (git/svn/hg/bzr) однозначно устарели - сейчас используется другой, куда более аккуратный, формат. Настоятельно рекомендую ознакомиться на эту тему [с данной статьей](//wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines "ArchWiki"). Например, для пакета **qmmp-qsmmp-git** кусок PKGBUILD'а выглядит так:
Вообще говоря, для стандартных случаев существуют прототипы PKGBUILD'ов. Их
можно найти в `/usr/share/pacman/`, хотя местами они могли немного устареть
(больше года как). Так, прототипы для пакетов из системы контроля версий
(git/svn/hg/bzr) однозначно устарели - сейчас используется другой, куда более
аккуратный, формат. Настоятельно рекомендую ознакомиться на эту тему [с данной
статьей](//wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines "ArchWiki").
Например, для пакета **qmmp-qsmmp-git** кусок PKGBUILD'а выглядит так:
```bash
pkgname=qmmp-qsmmp-git
@ -173,7 +335,9 @@ pkgver() {
}
```
Также, я отмечу, что некоторые пакеты имеют свой устоявшийся формат, поэтому, зачастую, полезно поискать что-то похожее в AUR и сделать свой PKGBUILD по образу и подобию.
Также, я отмечу, что некоторые пакеты имеют свой устоявшийся формат, поэтому,
зачастую, полезно поискать что-то похожее в AUR и сделать свой PKGBUILD по
образу и подобию.
## <a href="#links" class="anchor" id="links"><span class="octicon octicon-link"></span></a>Дополнительные ссылки
@ -182,4 +346,6 @@ pkgver() {
* [ArchWiki про AUR](//wiki.archlinux.org/index.php/AUR "ArchWiki")
* [ArchWiki про PKGBUILD](//wiki.archlinux.org/index.php/PKGBUILD "ArchWiki")
* [ArchWiki про makepkg](//wiki.archlinux.org/index.php/Makepkg "ArchWiki")
* [ArchWiki немного про стандарты](//wiki.archlinux.org/index.php/Arch_packaging_standards "ArchWiki") (внизу есть весьма полезные ссылки на гайды для конкретных типов пакетов)
* [ArchWiki немного про
стандарты](//wiki.archlinux.org/index.php/Arch_packaging_standards "ArchWiki")
(внизу есть весьма полезные ссылки на гайды для конкретных типов пакетов)

View File

@ -7,19 +7,28 @@ tags: linux, разработка
title: Написание своих дополнений для Shell. Zsh
short: writting-own-completions-p1
---
<figure class="img">![bash_completion](/resources/papers/zsh_completion.png)</figure> В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы.
<figure class="img">![bash_completion](/resources/papers/zsh_completion.png)</figure> В
данных статьях описываются некоторые основы создания файлов дополнений для
собственной программы.
<!--more-->
## <a href="#preamble" class="anchor" id="preamble"><span class="octicon octicon-link"></span></a>Преамбула
В процессе разработки [одного своего проекта](/ru/projects/netctl-gui "Страница netctl-gui") возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.
В процессе разработки [одного своего проекта](/ru/projects/netctl-gui
"Страница netctl-gui") возникло желание добавить также файлы дополнений (только
не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но
читать что-либо тогда мне было лень, и так и не осилил.
## <a href="#introduction" class="anchor" id="introduction"><span class="octicon octicon-link"></span></a>Введение
Существует несколько возможных вариантов написания файла автодополнения для zsh. В случае данной статьи я остановлюсь только на одном из них, который предоставляет большие возможности и не требует больших затрат (например, работы с регулярными выражениями).
Существует несколько возможных вариантов написания файла автодополнения для zsh.
В случае данной статьи я остановлюсь только на одном из них, который
предоставляет большие возможности и не требует больших затрат (например, работы
с регулярными выражениями).
Рассмотрим на примере моего же приложения, часть справки к которому выглядит таким образом:
Рассмотрим на примере моего же приложения, часть справки к которому выглядит
таким образом:
```bash
netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
@ -30,20 +39,29 @@ netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FI
* флаги `-h` и `--help` не требуют аргументов;
* флаги `-e` и `--essid` требуют аргумента в виде строки, без дополнения;
* флаги `-c` и `--config` требуют аргумента в виде строки, файл с произвольной локацией;
* флаги `-o` и `--open` требуют аргумента в виде строки, дополнение по файлам из определенной директории;
* флаги `-t` и `--tab` требуют аргумента в виде строки, дополнение из указанного массива;
* флаг `--set-opts` требует аргумента в виде строки, дополнение из указанного массива, разделены запятыми;
* флаги `-c` и `--config` требуют аргумента в виде строки, файл с произвольной
локацией;
* флаги `-o` и `--open` требуют аргумента в виде строки, дополнение по файлам из
определенной директории;
* флаги `-t` и `--tab` требуют аргумента в виде строки, дополнение из указанного
массива;
* флаг `--set-opts` требует аргумента в виде строки, дополнение из указанного
массива, разделены запятыми;
## <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>Структура файла
В заголовке должно быть обязательно указано, что это файл дополнений и для каких приложений он служит (можно строкой, если в файле будет содержаться дополнение для нескольких команд):
В заголовке должно быть обязательно указано, что это файл дополнений и для каких
приложений он служит (можно строкой, если в файле будет содержаться дополнение
для нескольких команд):
```bash
#compdef netctl-gui
```
Дальше идет описание флагов, вспомогательные функции и переменные. Замечу, что функции и переменные, которые будут использоваться для дополнения **должны возвращать массивы**, а не строки. В моем случае схема выглядит примерно так (все функции и переменные в этой главе умышленно оставлены пустыми):
Дальше идет описание флагов, вспомогательные функции и переменные. Замечу, что
функции и переменные, которые будут использоваться для дополнения **должны
возвращать массивы**, а не строки. В моем случае схема выглядит примерно так
(все функции и переменные в этой главе умышленно оставлены пустыми):
```bash
# variables
@ -53,14 +71,17 @@ _netctl_gui_tabs=()
_netctl_profiles() {}
```
Затем идут основные функции, которые будут вызываться для дополнения для определенной команды. В моем случае команда одна, и функция одна:
Затем идут основные функции, которые будут вызываться для дополнения для
определенной команды. В моем случае команда одна, и функция одна:
```bash
# work block
_netctl-gui() {}
```
Далее **без выделения в отдельную функцию** идет небольшое шаманство, связанное с соотнесением приложения, которое было декларировано в первой строке, с функцией в теле скрипта:
Далее **без выделения в отдельную функцию** идет небольшое шаманство, связанное
с соотнесением приложения, которое было декларировано в первой строке, с
функцией в теле скрипта:
```bash
case "$service" in
@ -72,7 +93,19 @@ esac
## <a href="#flags" class="anchor" id="flags"><span class="octicon octicon-link"></span></a>Флаги
Как я и говорил во введении, существует несколько способов создания подобных файлов. В частности, они различаются декларацией флагов и их дальнейшей обработкой. В данном случае я буду использовать команду `_arguments`, которая требует специфичный формат переменных. Выглядит он таким образом `ФЛАГ[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ`. Последние два поля не обязательны и, как Вы увидите чуть ниже, вовсе и не нужны в некоторых местах. Если Вы предусматриваете два флага (короткий и длинный формат) на одно действие, то формат чуть-чуть усложняется: `{(ФЛАГ_2)ФЛАГ_1,(ФЛАГ_1)ФЛАГ_2}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ`. Замечу, что, если Вы хотите сделать дополнения для двух типов флагов, но некоторые флаги не имеют второй записи, то Вам необходимо продублировать его таким образом: `{ФЛАГ,ФЛАГ}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ`. `СООБЩЕНИЕ` - сообщение, которое будет показано, `ДЕЙСТВИЕ` - действие, которое будет выполнено после этого флага. В случае данного туториала, `ДЕЙСТВИЕ` будет иметь вид `->СОСТОЯНИЕ`.
Как я и говорил во введении, существует несколько способов создания подобных
файлов. В частности, они различаются декларацией флагов и их дальнейшей
обработкой. В данном случае я буду использовать команду `_arguments`, которая
требует специфичный формат переменных. Выглядит он таким образом `ФЛАГ[описание]:
СООБЩЕНИЕ:ДЕЙСТВИЕ`. Последние два поля не обязательны и, как Вы увидите чуть
ниже, вовсе и не нужны в некоторых местах. Если Вы предусматриваете два флага
(короткий и длинный формат) на одно действие, то формат чуть-чуть усложняется:
`{(ФЛАГ_2)ФЛАГ_1,(ФЛАГ_1)ФЛАГ_2}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ`. Замечу, что,
если Вы хотите сделать дополнения для двух типов флагов, но некоторые флаги не
имеют второй записи, то Вам необходимо продублировать его таким образом:
`{ФЛАГ,ФЛАГ}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ`. `СООБЩЕНИЕ` - сообщение, которое
будет показано, `ДЕЙСТВИЕ` - действие, которое будет выполнено после этого флага.
В случае данного туториала, `ДЕЙСТВИЕ` будет иметь вид `->СОСТОЯНИЕ`.
Итак, согласно нашим требованиям, получается такое объявление аргументов:
@ -89,7 +122,8 @@ _netctl_gui_arglist=(
## <a href="#variables" class="anchor" id="variables"><span class="octicon octicon-link"></span></a>Массивы переменных
В нашем случае есть два статических массива (не изменятся ни сейчас, ни через пять минут) (массивы умышленно уменьшены):
В нашем случае есть два статических массива (не изменятся ни сейчас, ни через
пять минут) (массивы умышленно уменьшены):
```bash
_netctl_gui_settings=(
@ -103,7 +137,9 @@ _netctl_gui_tabs=(
)
```
И есть динамический массив, который должен каждый раз генерироваться. Он содержит, в данном случае, файлы в указанной директории (это можно сделать и средствами zsh, кстати):
И есть динамический массив, который должен каждый раз генерироваться. Он содержит,
в данном случае, файлы в указанной директории (это можно сделать и средствами
zsh, кстати):
```bash
_netctl_profiles() {
@ -113,7 +149,10 @@ _netctl_profiles() {
## <a href="#body" class="anchor" id="body"><span class="octicon octicon-link"></span></a>Тело функции
Помните, там выше было что-то про состояние? Оно хранится в переменной `$state`, и в теле функции делается проверка на то, чему оно равно, чтобы подобрать соответствующие действия. В начале также нужно не забыть вызвать `_arguments` с нашими флагами.
Помните, там выше было что-то про состояние? Оно хранится в переменной `$state`,
и в теле функции делается проверка на то, чему оно равно, чтобы подобрать
соответствующие действия. В начале также нужно не забыть вызвать `_arguments` с
нашими флагами.
```bash
_netctl-gui() {
@ -147,6 +186,12 @@ _netctl-gui() {
## <a href="#conclusion" class="anchor" id="conclusion"><span class="octicon octicon-link"></span></a>Заключение
Файл хранится в директории `/usr/share/zsh/site-functions/` с произвольным, в общем-то, именем с префиксом `_`. Файл примера полностью может быть найден [в моем репозитории](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/zsh-completions "Файл").
Файл хранится в директории `/usr/share/zsh/site-functions/` с произвольным, в
общем-то, именем с префиксом `_`. Файл примера полностью может быть найден
[в моем репозитории](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/zsh-completions
"Файл").
Дополнительная информация может быть найдена в репозитории [zsh-completions](//github.com/zsh-users/zsh-completions "GitHub"). Например, там есть такой [How-To](//github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org "Туториал"). А еще там есть много примеров.
Дополнительная информация может быть найдена в репозитории [zsh-completions]
(//github.com/zsh-users/zsh-completions "GitHub"). Например, там есть такой
[How-To](//github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org
"Туториал"). А еще там есть много примеров.

View File

@ -7,19 +7,29 @@ tags: linux, разработка
title: Написание своих дополнений для Shell. Bash
short: writting-own-completions-p2
---
<figure class="img">![bash_completion](/resources/papers/bash_completion.png)</figure> В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы.
<figure class="img">![bash_completion](/resources/papers/bash_completion.png)</figure> В
данных статьях описываются некоторые основы создания файлов дополнений для
собственной программы.
<!--more-->
## <a href="#preamble" class="anchor" id="preamble"><span class="octicon octicon-link"></span></a>Преамбула
В процессе разработки [одного своего проекта](/ru/projects/netctl-gui "Страница netctl-gui") возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.
В процессе разработки [одного своего проекта](/ru/projects/netctl-gui
"Страница netctl-gui") возникло желание добавить также файлы дополнений (только
не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но
читать что-либо тогда мне было лень, и так и не осилил.
## <a href="#introduction" class="anchor" id="introduction"><span class="octicon octicon-link"></span></a>Введение
Bash, в [отличие от zsh](/ru/2014/07/17/writting-own-completions-p1 "Статья о дополнениях zsh"), требует к себе некоторого велосипедостроения в отношении дополнений. Бегло погуглив, я не нашел более-менее нормальных туториалов, потому за основу были взяты имеющиеся в системе файлы дополнений для `pacman`.
Bash, в [отличие от zsh](/ru/2014/07/17/writting-own-completions-p1
"Статья о дополнениях zsh"), требует к себе некоторого велосипедостроения в
отношении дополнений. Бегло погуглив, я не нашел более-менее нормальных
туториалов, потому за основу были взяты имеющиеся в системе файлы дополнений для
`pacman`.
Рассмотрим на примере все того же моего приложения. Я напомню, что часть справки к которому выглядит таким образом:
Рассмотрим на примере все того же моего приложения. Я напомню, что часть справки
к которому выглядит таким образом:
```bash
netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
@ -30,14 +40,22 @@ netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FI
* флаги `-h` и `--help` не требуют аргументов;
* флаги `-e` и `--essid` требуют аргумента в виде строки, без дополнения;
* флаги `-c` и `--config` требуют аргумента в виде строки, файл с произвольной локацией;
* флаги `-o` и `--open` требуют аргумента в виде строки, дополнение по файлам из определенной директории;
* флаги `-t` и `--tab` требуют аргумента в виде строки, дополнение из указанного массива;
* флаг `--set-opts` требует аргумента в виде строки, дополнение из указанного массива, разделены запятыми;
* флаги `-c` и `--config` требуют аргумента в виде строки, файл с произвольной
локацией;
* флаги `-o` и `--open` требуют аргумента в виде строки, дополнение по файлам из
определенной директории;
* флаги `-t` и `--tab` требуют аргумента в виде строки, дополнение из указанного
массива;
* флаг `--set-opts` требует аргумента в виде строки, дополнение из указанного
массива, разделены запятыми;
## <a href="#file" class="anchor" id="file"><span class="octicon octicon-link"></span></a>Структура файла
Здесь **все** переменные должны возвращать массив. Каких-либо особых форматов тут уже нет. Сначала опишем флаги, потом уже все остальные переменные. Я напомню (так как ниже я уже не буду приводить функции более подробно), что `_netctl_profiles()`, в отличие от других переменных, должна возвращать актуальный на данный момент массив:
Здесь **все** переменные должны возвращать массив. Каких-либо особых форматов тут
уже нет. Сначала опишем флаги, потом уже все остальные переменные. Я напомню
(так как ниже я уже не буду приводить функции более подробно), что
`_netctl_profiles()`, в отличие от других переменных, должна возвращать
актуальный на данный момент массив:
```bash
# variables
@ -47,14 +65,16 @@ _netctl_gui_tabs=()
_netctl_profiles() {}
```
Затем идут основные функции, которые будут вызываться для дополнения для определенной команды. В моем случае команда одна, и функция одна:
Затем идут основные функции, которые будут вызываться для дополнения для
определенной команды. В моем случае команда одна, и функция одна:
```bash
# work block
_netctl-gui() {}
```
Далее, опять, **без выделения в отдельную функцию** делаем соответствие "функция-команда":
Далее, опять, **без выделения в отдельную функцию** делаем соответствие
"функция-команда":
```bash
complete -F _netctl_gui netctl-gui
@ -62,7 +82,8 @@ complete -F _netctl_gui netctl-gui
## <a href="#flags" class="anchor" id="flags"><span class="octicon octicon-link"></span></a>Флаги
Как было сказано выше, особого формата тут нет, доступные флаги располагаются просто массивом:
Как было сказано выше, особого формата тут нет, доступные флаги располагаются
просто массивом:
```bash
_netctl_gui_arglist=(
@ -100,7 +121,14 @@ _netctl_profiles() {
## <a href="#body" class="anchor" id="body"><span class="octicon octicon-link"></span></a>Тело функции
За дополнение в bash отвечает переменная `COMPREPLY`. Для отслеживания текущего состояния нужно вызвать функцию `_get_comp_words_by_ref` с параметрами `cur` (текущая опция) и `prev` (предыдущая, собственно состояние). Ну и нужно несколько точек, на которых сворачивать в определенную часть case (переменные `want*`). Для генерации дополнения используется `compgen`. После флага `-W` ему подается список слов. (Есть еще флаг `-F`, который вызывает функцию, но у меня он помимо этого еще и ворнинг выдает.) Последним аргументом идет текущая строка, к которой и нужно генерировать дополнение.
За дополнение в bash отвечает переменная `COMPREPLY`. Для отслеживания текущего
состояния нужно вызвать функцию `_get_comp_words_by_ref` с параметрами `cur`
(текущая опция) и `prev` (предыдущая, собственно состояние). Ну и нужно
несколько точек, на которых сворачивать в определенную часть case (переменные
`want*`). Для генерации дополнения используется `compgen`. После флага `-W` ему
подается список слов. (Есть еще флаг `-F`, который вызывает функцию, но у меня
он помимо этого еще и ворнинг выдает.) Последним аргументом идет текущая строка,
к которой и нужно генерировать дополнение.
Таким образом, наша функция выглядит так:
@ -141,4 +169,6 @@ _netctl_gui() {
## <a href="#conclusion" class="anchor" id="conclusion"><span class="octicon octicon-link"></span></a>Заключение
Файл хранится в директории `/usr/share/bash-completion/completions/` с произвольным именем. Файл примера полностью может быть найден [в моем репозитории](//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/bash-completions "Файл").
Файл хранится в директории `/usr/share/bash-completion/completions/` с
произвольным именем. Файл примера полностью может быть найден [в моем репозитории]
(//raw.githubusercontent.com/arcan1s/netctl-gui/master/sources/gui/bash-completions "Файл").

View File

@ -7,7 +7,11 @@ tags: awesome-widgets, pytextmonitor
title: Миграция Awesome Widgets (ex-PyTextMonitor) на версию 2.0
short: migration-to-v2
---
<figure class="img">![broken-computer](/resources/papers/broken-computer.jpg)</figure> В версии 2.0 произошел ряд значительных изменений (совершенно случайно, само по себе, я тут не при чем) и было полностью переписано пользовательское API. Данная статья призвана облегчить миграцию со старых версий PyTextMonitor (<1.11.0) на новую (>2.0).
<figure class="img">![broken-computer](/resources/papers/broken-computer.jpg)</figure> В
версии 2.0 произошел ряд значительных изменений (совершенно случайно, само по
себе, я тут не при чем) и было полностью переписано пользовательское API. Данная
статья призвана облегчить миграцию со старых версий PyTextMonitor (<1.11.0) на
новую (>2.0).
<!--more-->
@ -15,22 +19,32 @@ short: migration-to-v2
Во-первых, это ряд нововведений, среди которых:
* Новый виджет - **Desktop panel**. Показывает список рабочих столов, выделяя активный. Умеет переключаться между ними по клику. Также умеет скрывать выбранные панели по хоткею.
* Новые теги - `hddfreemb`, `hddfreegb`, `memusedmb`, `memusedgb`, `memfreemb`, `memfreegb`, `swapfreemb`, `swapfreegb`. А также новые теги, связанные с новыми возможностями - `desktop`, `ndesktop`, `tdesktops`.
* Новый графический тултип - батарея. Двухцветный, в зависимости от статуса адаптора питания.
* Новый виджет - **Desktop panel**. Показывает список рабочих столов, выделяя
активный. Умеет переключаться между ними по клику. Также умеет скрывать выбранные
панели по хоткею.
* Новые теги - `hddfreemb`, `hddfreegb`, `memusedmb`, `memusedgb`, `memfreemb`,
`memfreegb`, `swapfreemb`, `swapfreegb`. А также новые теги, связанные с новыми
возможностями - `desktop`, `ndesktop`, `tdesktops`.
* Новый графический тултип - батарея. Двухцветный, в зависимости от статуса
адаптора питания.
## <a href="#changes" class="anchor" id="changes"><span class="octicon octicon-link"></span></a>Значительные изменения
Во-вторых, и это главное - произошел ряд изменений, из-за которых старые настройки **не будут** более работать. Среди пользовательских следует выделить:
Во-вторых, и это главное - произошел ряд изменений, из-за которых старые настройки
**не будут** более работать. Среди пользовательских следует выделить:
* Переписка основного виджета на `С++`, что вызвало переименование проекта в **Awesome Widgets**, а главного виджета в **Awesome Widget**
* Переписка основного виджета на `С++`, что вызвало переименование проекта в
**Awesome Widgets**, а главного виджета в **Awesome Widget**
* Настройки файлов батареи и адаптора питания **вынесены в DataEngine**.
* **Убраны поля**. Теперь виджет представляет собой монолитное поле. Текст настраивается в специальном браузере.
* **Убраны поля**. Теперь виджет представляет собой монолитное поле. Текст
настраивается в специальном браузере.
* В связи с удалением отдельных полей, тултип теперь **настраивается отдельно**.
* Настройка выравнивания текста теперь может быть осуществлена только с использованием HTML тегов.
* Настройка выравнивания текста теперь может быть осуществлена только с
использованием HTML тегов.
* В связи с объединением полей, несколько тегов были переименованы:
* `custom` (время) -> `ctime`
* `custom` (время работы) -> `cuptime`
* `time` (плеер) -> `duration`
По любым проблемам, связанным с миграцией, не стесняйтесь оставлять здесь комментарий.
По любым проблемам, связанным с миграцией, не стесняйтесь оставлять здесь
комментарий.

View File

@ -7,7 +7,9 @@ tags: linux, systemd, ecryptfs
title: Как зашифровать хомяк и не об%$#аться. For dummies
short: ecnryption-home-directory
---
<figure class="img">![single-door](/resources/papers/single-door.jpg)</figure> Статья посвящена шифрованию домашнего каталога с использованием ecryptfs и настройке автомонтирования посредством systemd с использованием ключа на флешке.
<figure class="img">![single-door](/resources/papers/single-door.jpg)</figure> Статья
посвящена шифрованию домашнего каталога с использованием ecryptfs и настройке
автомонтирования посредством systemd с использованием ключа на флешке.
<!--more-->
@ -26,7 +28,10 @@ short: ecnryption-home-directory
## <a href="#step1" class="anchor" id="step1"><span class="octicon octicon-link"></span></a>Шаг 1: Шифрование
Самое распространенное решение в интернетах - воспользоваться автоматическими тулзами. Однако в нашем случае они не подходят, так как нам необходимо импортировать сигнатуру ключа / пароля, что при данном решении невозможно (или у автора руки кривые).
Самое распространенное решение в интернетах - воспользоваться автоматическими
тулзами. Однако в нашем случае они не подходят, так как нам необходимо
импортировать сигнатуру ключа / пароля, что при данном решении невозможно (или
у автора руки кривые).
Делается шифрование следующим образом (lol):
@ -34,7 +39,10 @@ short: ecnryption-home-directory
mount -t ecryptfs /home/$USER /home/$USER
```
В процессе он у нас задаст несколько вопросов (я предлагаю первое монтирование делать в интерактивном режиме). Ответы можно взять примерно такие (в комментариях показано, что эти опции делают), обратите внимание, что если вы что то измените, то изменится и некоторые строчки далее:
В процессе он у нас задаст несколько вопросов (я предлагаю первое монтирование
делать в интерактивном режиме). Ответы можно взять примерно такие (в
комментариях показано, что эти опции делают), обратите внимание, что если вы что
то измените, то изменится и некоторые строчки далее:
```bash
# ключ или сертификат. Второе надежнее, но до тех пор пока не потеряете %)
@ -93,25 +101,31 @@ cp -a /home/$USER-org/. /home/$USER
## <a href="#step2" class="anchor" id="step2"><span class="octicon octicon-link"></span></a>Шаг 2: Автомонтирование с systemd
Создадим файл на флешке (я использовал microSD) со следующим содержанием (пароль только поставьте свой):
Создадим файл на флешке (я использовал microSD) со следующим содержанием (пароль
только поставьте свой):
```bash
passphrase_passwd=someverystronguniqpassword
```
Добавим автомонтирование флешки (направление `/mnt/key`) в `fstab` с опцией `ro`, например так:
Добавим автомонтирование флешки (направление `/mnt/key`) в `fstab` с опцией `ro`,
например так:
```bash
UUID=dc3ecb41-bc40-400a-b6bf-65c5beeb01d7 /mnt/key ext2 ro,defaults 0 0
```
Теперь настроим монтирование хомяка. Опции монтирования можно подглядеть как то так:
Теперь настроим монтирование хомяка. Опции монтирования можно подглядеть как то
так:
```bash
mount | grep ecryptfs
```
Однако замечу, что там указаны не все опции, необходимо добавить также `key`, `no_sig_cache`, `ecryptfs_passthrough`. Таким образом, для systemd mount-юнит выглядит примерно так (любители shell-простыней смогут написать свой демон, потому что через `fstab` не сработает просто так (см. ниже)).
Однако замечу, что там указаны не все опции, необходимо добавить также `key`,
`no_sig_cache`, `ecryptfs_passthrough`. Таким образом, для systemd mount-юнит
выглядит примерно так (любители shell-простыней смогут написать свой демон,
потому что через `fstab` не сработает просто так (см. ниже)).
```bash
# cat /etc/systemd/system/home-$USER.mount
@ -129,7 +143,9 @@ Options=rw,nosuid,nodev,relatime,key=passphrase:passphrase_passwd_file=/mnt/key/
WantedBy=local-fs.target
```
`XXXXX` нужно заменить на сигнатуру из опций, с которыми сейчас смонтирована директория. Также нужно вставить имя пользователя и отредактировать путь к файлу с паролем (и имя mount-юнита), если это необходимо. Автозагрука:
`XXXXX` нужно заменить на сигнатуру из опций, с которыми сейчас смонтирована
директория. Также нужно вставить имя пользователя и отредактировать путь к файлу
с паролем (и имя mount-юнита), если это необходимо. Автозагрука:
```bash
systemctl enable home-$USER.mount
@ -158,17 +174,25 @@ WantedBy=local-fs.target
systemctl enable umount-key.service
```
Перезагружаемся, если все ок, удаляем бекап. Если нет - значит что то где то неправильно сделали, восстанавливаем из режима восстановления.
Перезагружаемся, если все ок, удаляем бекап. Если нет - значит что то где то
неправильно сделали, восстанавливаем из режима восстановления.
## <a href="#whynotfstab" class="anchor" id="whynotfstab"><span class="octicon octicon-link"></span></a>Почему не fstab?
В моем случае, мне не получилось заставить флешку монтироваться раньше. Таким образом на загрузке я попадал в консоль восстановления из которой нужно было просто продолжить загрузку. Существующие в интернете методы предлагают два возможных варианта:
В моем случае, мне не получилось заставить флешку монтироваться раньше. Таким
образом на загрузке я попадал в консоль восстановления из которой нужно было
просто продолжить загрузку. Существующие в интернете методы предлагают два
возможных варианта:
* Создать запись с опцией noauto, потом монтировать через специальную запись в `rc.local`.
* Создать запись с опцией nofail, потом перемонтировать все разделы через `rc.local`.
* Создать запись с опцией noauto, потом монтировать через специальную запись в
`rc.local`.
* Создать запись с опцией nofail, потом перемонтировать все разделы через
`rc.local`.
Оба варианта меня не устроили в виду их костыльности.
## <a href="#whynotpam" class="anchor" id="whynotpam"><span class="octicon octicon-link"></span></a>Почему не pam?
Другое распространенное предложение - монтировать через запись в настройках pam. Мне этот вариант не подходит, так как у меня авторизация беспарольная по отпечатку пальца.
Другое распространенное предложение - монтировать через запись в настройках pam.
Мне этот вариант не подходит, так как у меня авторизация беспарольная по
отпечатку пальца.

View File

@ -7,17 +7,25 @@ tags: awesome-widgets, pytextmonitor
title: Awesome Widgets - свистелки и перделки
short: aw-v21-bells-and-whistles
---
Данная статья посвящена обсуждению настройки своих скриптов и графических баров в новой версии Awesome Widgets (2.1).
Данная статья посвящена обсуждению настройки своих скриптов и графических баров
в новой версии Awesome Widgets (2.1).
<!--more-->
## <a href="#intro" class="anchor" id="intro"><span class="octicon octicon-link"></span></a>Введение
Для начала, я настоятельно рекомендую для после обновления **не открывая настроек виджета** скопировать в безопасное место файл `$HOME/.kde4/share/config/extsysmon.conf`, так как старые настройки кастомных скриптов теперь несовместимы. Вообще, следует заметить, что все фичи можно настраивать и из графического интерфейса, однако я опишу, как это делается простым редактированием desktop файлов.
Для начала, я настоятельно рекомендую для после обновления **не открывая настроек
виджета** скопировать в безопасное место файл `$HOME/.kde4/share/config/extsysmon.conf`,
так как старые настройки кастомных скриптов теперь несовместимы. Вообще, следует
заметить, что все фичи можно настраивать и из графического интерфейса, однако я
опишу, как это делается простым редактированием desktop файлов.
## <a href="#general" class="anchor" id="general"><span class="octicon octicon-link"></span></a>Общее
Все элементы хранятся в двух директориях: `/usr/share/awesomewidgets/%TYPE%/` и `$HOME/.local/share/awesomewidgets/%TYPE%/` (пути могут немного отличаться в зависимости от используемого дистрибутива). Настройки в домашней директории перезаписывают глобальные настройки.
Все элементы хранятся в двух директориях: `/usr/share/awesomewidgets/%TYPE%/` и
`$HOME/.local/share/awesomewidgets/%TYPE%/` (пути могут немного отличаться в
зависимости от используемого дистрибутива). Настройки в домашней директории
перезаписывают глобальные настройки.
## <a href="#bars" class="anchor" id="bars"><span class="octicon octicon-link"></span></a>Бары
@ -82,7 +90,9 @@ short: aw-v21-bells-and-whistles
## <a href="#weather" class="anchor" id="weather"><span class="octicon octicon-link"></span></a>Погода
Для показа погоды используются данные и API [OpenWeatherMap](//openweathermap.org/ "Сайт OpenWeatherMap"). Директория называется `weather`, файлы настроек имеют следующие поля:
Для показа погоды используются данные и API [OpenWeatherMap]
(//openweathermap.org/ "Сайт OpenWeatherMap"). Директория называется `weather`,
файлы настроек имеют следующие поля:
| Поле | Обязательное | Значение | По-умолчанию |
|------|--------------|----------|--------------|

View File

@ -7,7 +7,9 @@ tags: разработка, c++, cmake
title: Добавляем cppcheck и clang-format для проекта на cmake
short: cppcheck-and-clang-format
---
Небольшое How-To посвященное прикручиванию автоматической проверки стиля, а также статического анализатора к проекту на `C++`, который использует в качестве системы сборки `cmake`.
Небольшое How-To посвященное прикручиванию автоматической проверки стиля, а
также статического анализатора к проекту на `C++`, который использует в качестве
системы сборки `cmake`.
<!--more-->
@ -23,27 +25,47 @@ sources/
|- second_component/
```
**3rdparty** - директория с различными дополнительными библиотеками, которую надо исключить из проверок (в дальнейшем соответствует переменной cmake `PROJECT_TRDPARTY_DIR`). Дополнительно допустим, что у нас, помимо обычных файлов исходного кода (`*.cpp`, `*.h`) есть еще какие-либо (например, `*.qml`).
**3rdparty** - директория с различными дополнительными библиотеками, которую
надо исключить из проверок (в дальнейшем соответствует переменной cmake
`PROJECT_TRDPARTY_DIR`). Дополнительно допустим, что у нас, помимо обычных
файлов исходного кода (`*.cpp`, `*.h`) есть еще какие-либо (например, `*.qml`).
Дополнительно используемые ниже команды можно вставить в pre-commit hook и невозбранно тролить коллег по ынтырпрайзу, не давая им закоммитить ничего, пока они не научатся читать `CONTRIBUTING.md`.
Дополнительно используемые ниже команды можно вставить в pre-commit hook и
невозбранно тролить коллег по ынтырпрайзу, не давая им закоммитить ничего, пока
они не научатся читать `CONTRIBUTING.md`.
## <a href="#cppcheck" class="anchor" id="cppcheck"><span class="octicon octicon-link"></span></a>cppcheck
Коль скоро нормальных (из коробки) статических анализаторов не завезли в open source будем использовать то, что имеется. Знатоки говорят, что [cppcheck](//cppcheck.sourceforge.net/ "Сайт cppcheck") при должной конфигурации будет лучше, чем любой аналог, но конфигурация его для достаточно большого проекта похожа больше на написание нового проекта. Суть добавления cppheck к проекту сводится к указанию очевидных недоработок в коде и тыканью в ~~лужу~~ них.
Коль скоро нормальных (из коробки) статических анализаторов не завезли в open
source будем использовать то, что имеется. Знатоки говорят, что
[cppcheck](//cppcheck.sourceforge.net/ "Сайт cppcheck") при должной конфигурации
будет лучше, чем любой аналог, но конфигурация его для достаточно большого
проекта похожа больше на написание нового проекта. Суть добавления cppheck к
проекту сводится к указанию очевидных недоработок в коде и тыканью в <del>лужу</del>
них.
### <a href="#cppcheck-run" class="anchor" id="cppcheck-run"><span class="octicon octicon-link"></span></a>Общий пример запуска
Тут все, казалось бы, очень просто:
```bash
cppcheck --enable=warning,performance,portability,information,missingInclude --std=c++11 --library=qt.cfg --template="[{severity}][{id}] {message} {callstack} (On {file}:{line})" --verbose --quiet path/to/source/files/or/directory
cppcheck --enable=warning,performance,portability,information,missingInclude
--std=c++11 --library=qt.cfg --template="[{severity}][{id}] {message}
{callstack} (On {file}:{line})" --verbose --quiet
path/to/source/files/or/directory
```
* `--enable` говорит о том, какие уведомления надо включить. Я выключил `style` (для этого ниже мы заведем `clang-format`), `unusedFunction` - выдает false-positive для некоторых мест.
* `--enable` говорит о том, какие уведомления надо включить. Я выключил `style`
(для этого ниже мы заведем `clang-format`), `unusedFunction` - выдает
false-positive для некоторых мест.
* `--std` говорит об используемом стандарте.
* `--library=qt.cfg` некий файл настроек, который говорит о том, что и как надо обрабатывать. Добрые разработчики предлагаю почитать на эту тему [мануал](//cppcheck.sourceforge.net/manual.pdf "cppcheck мануал"). В данном случае я использовал шаблон из `/usr/share/cppcheck/cfg/`.
* `--library=qt.cfg` некий файл настроек, который говорит о том, что и как надо
обрабатывать. Добрые разработчики предлагаю почитать на эту тему
[мануал](//cppcheck.sourceforge.net/manual.pdf "cppcheck мануал"). В данном
случае я использовал шаблон из `/usr/share/cppcheck/cfg/`.
* `--template` - шаблон строки уведомления.
* `---verbose --quiet` две противоречащие друг другу опции. Первая включает более информативные сообщения, вторая выключает отчет о прогрессе.
* `---verbose --quiet` две противоречащие друг другу опции. Первая включает
более информативные сообщения, вторая выключает отчет о прогрессе.
### <a href="#cppcheck-cmake" class="anchor" id="cppcheck-cmake"><span class="octicon octicon-link"></span></a>Интеграция с cmake
@ -75,7 +97,11 @@ add_custom_target(
)
```
`cppcheck` умеет рекурсивно директории проверять, однако, на моем примере, мне нужно было пропустить проверку qml-файлов, потому что open source проект, в лучших традициях, сегфолтился на некоторых из них - именно для этого используется поиск исходных файлов с дальнейшим выбрасыванием из них файлов, которые не должны проверяться.
`cppcheck` умеет рекурсивно директории проверять, однако, на моем примере, мне
нужно было пропустить проверку qml-файлов, потому что open source проект, в
лучших традициях, сегфолтился на некоторых из них - именно для этого
используется поиск исходных файлов с дальнейшим выбрасыванием из них файлов,
которые не должны проверяться.
Включаем в проект (`CMakeLists.txt`)...
@ -95,11 +121,17 @@ make cppcheck
### <a href="#cppcheck-adds" class="anchor" id="cppcheck-adds"><span class="octicon octicon-link"></span></a>Дополнительно
* Можно добавить свои директории для поиска хидеров, используя опцию `-I dir`.
* Можно вычеркнуть файлы и/или директории из проверки, используя опцию `-i path/to/file/or/directory`.
* Можно вычеркнуть файлы и/или директории из проверки, используя опцию `-i
path/to/file/or/directory`.
## <a href="#clang" class="anchor" id="clang"><span class="octicon octicon-link"></span></a>clang-format
[clang-format](//clang.llvm.org/docs/ClangFormat.html "Сайт clang-format") предназначен для автоматического подгона стиля под желаемый или требуемый. Среди аналогов стоит выделить [astyle](//astyle.sourceforge.net/ "Сайт astyle"), который имеет очень скромные возможности, и [uncrustify](//uncrustify.sourceforge.net/ "Сайт uncrustify"), который, наоборот, имеет слишком много опций.
[clang-format](//clang.llvm.org/docs/ClangFormat.html "Сайт clang-format")
предназначен для автоматического подгона стиля под желаемый или требуемый. Среди
аналогов стоит выделить [astyle](//astyle.sourceforge.net/ "Сайт astyle"),
который имеет очень скромные возможности, и
[uncrustify](//uncrustify.sourceforge.net/ "Сайт uncrustify"), который,
наоборот, имеет слишком много опций.
### <a href="#clang-run" class="anchor" id="clang-run"><span class="octicon octicon-link"></span></a>Общий пример запуска
@ -109,8 +141,10 @@ clang-format -i -style=LLVM /path/to/source/files
(К сожалению, он **не умеет** в рекурсивный обход директории.)
* `-i` включает автозамену файлов (в противном случае, результат будет печататься в stdout).
* `-style` выбор определенного стиля либо из предустановленных, либо из файла (`file`), см. ниже.
* `-i` включает автозамену файлов (в противном случае, результат будет
печататься в stdout).
* `-style` выбор определенного стиля либо из предустановленных, либо из файла
(`file`), см. ниже.
### <a href="#clang-cmake" class="anchor" id="clang-cmake"><span class="octicon octicon-link"></span></a>Интеграция с cmake
@ -137,7 +171,8 @@ add_custom_target(
)
```
Аналогичных способ поиска исходных файлов, как и для `cppcheck`, поскольку `clang-format` не умеет в рекурсию.
Аналогичных способ поиска исходных файлов, как и для `cppcheck`, поскольку
`clang-format` не умеет в рекурсию.
Включаем в проект (`CMakeLists.txt`)...
@ -156,10 +191,18 @@ make clangformat
### <a href="#clang-adds" class="anchor" id="clang-adds"><span class="octicon octicon-link"></span></a>Дополнительно
* Настройка. Можно почитать опции на [официальном сайте](//clang.llvm.org/docs/ClangFormat.html "Сайт clang-format"). Также можно воспользоваться [интерактивной утилитой](//clangformat.com/ "Сайт") для просмотра опций. Для использования уже готового стиля за базу используем следующую команду:
* Настройка. Можно почитать опции на [официальном
сайте](//clang.llvm.org/docs/ClangFormat.html "Сайт clang-format"). Также можно
воспользоваться [интерактивной утилитой](//clangformat.com/ "Сайт") для
просмотра опций. Для использования уже готового стиля за базу используем
следующую команду:
```bash
clang-format -style=LLVM -dump-config > .clang-format
```
Далее редактируется полученный файл `.clang-format`. Для включения его необходимо передать опцию `-style=file`, файл должен находиться в одной из родительских директории для каждого файла (например, в корне проекта). Также, можно передать нужные опции прямо в командной строке, например `-style="{BasedOnStyle: llvm, IndentWidth: 8}"`.
Далее редактируется полученный файл `.clang-format`. Для включения его
необходимо передать опцию `-style=file`, файл должен находиться в одной из
родительских директории для каждого файла (например, в корне проекта). Также,
можно передать нужные опции прямо в командной строке, например
`-style="{BasedOnStyle: llvm, IndentWidth: 8}"`.

View File

@ -7,4 +7,9 @@ tags: сайт
title: Изменения URL
short: url-changes
---
Хочу заметить, что я изменил адреса сайта и репозитория с [arcanis.name](//arcanis.name) на [arcanis.me](//arcanis.me). Изменения были сделаны исключительно потому что ME домен чуть более симпатичнее. Старые адреса пока еще рабочие и будут такими до марта 2016 год (дата регистрации домена), но на текущий момент я настроил переадресацию со старых адресов на новые. Извините за недобства.
Хочу заметить, что я изменил адреса сайта и репозитория с [arcanis.name]
(//arcanis.name) на [arcanis.me](//arcanis.me). Изменения были сделаны
исключительно потому что ME домен чуть более симпатичнее. Старые адреса пока еще
рабочие и будут такими до марта 2016 год (дата регистрации домена), но на
текущий момент я настроил переадресацию со старых адресов на новые. Извините за
недобства.

View File

@ -16,7 +16,8 @@ links:
---
<!-- info block -->
Простой демон, который создает git репозиторий в указанной директории и создает коммит в указанный промежуток времени.
Простой демон, который создает git репозиторий в указанной директории и создает
коммит в указанный промежуток времени.
<!--more-->
@ -64,7 +65,8 @@ See "man 1 ctrlconf" for more details
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
* Скачайте [архив](//github.com/arcan1s/git-etc/releases "GitHub") с актуальной версией исходных файлов.
* Скачайте [архив](//github.com/arcan1s/git-etc/releases "GitHub") с актуальной
версией исходных файлов.
* Извлеките из него файлы и установите приложение:
```bash
@ -107,7 +109,8 @@ systemctl start git-etc
systemctl enable git-etc
```
Но Вы можете изменить путь к конфигурационному файлу или изменить параметры. Для этого, скопируйте (рекомендуется) исходный конфигурационный файл
Но Вы можете изменить путь к конфигурационному файлу или изменить параметры. Для
этого, скопируйте (рекомендуется) исходный конфигурационный файл
```bash
cp /etc/git-etc.conf /новый/путь/к/git-etc.conf
@ -135,7 +138,8 @@ ExecStart=/usr/bin/git-etc -c /новый/путь/к/git-etc.conf
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Настройка
Все настройки хранятся в `/etc/git-etc.conf`. После редактирования, Вы должны перезапустить демон
Все настройки хранятся в `/etc/git-etc.conf`. После редактирования, Вы должны
перезапустить демон
```bash
systemctl restart git-etc
@ -154,8 +158,14 @@ systemctl restart git-etc
<!-- gui block -->
## <a href="#gui" class="anchor" id="gui"><span class="octicon octicon-link"></span></a>Графический интерфейс
Control Config (`ctrlconf`) - графический интерфейс для `git-etc`, написанный на `Python2/PyQt4`. Данное приложение позволяет Вам увидеть список коммитов и изменения в файлах в данных коммитах. Также данное приложение позволит Вам откатиться на указанный коммит (все файлы, посредством `git reset --hard`, или только указанный, посредством `git diff && git apply`). Также Вы можете объединить старый и новый конфигурационные файлы (используются две
ветки репозитория master и experimental). Приложение может потребовать привелегии root, убедитесь, что пакет `sudo` установлен.
Control Config (`ctrlconf`) - графический интерфейс для `git-etc`, написанный на
`Python2/PyQt4`. Данное приложение позволяет Вам увидеть список коммитов и
изменения в файлах в данных коммитах. Также данное приложение позволит Вам
откатиться на указанный коммит (все файлы, посредством `git reset --hard`, или
только указанный, посредством `git diff && git apply`). Также Вы можете
объединить старый и новый конфигурационные файлы (используются две
ветки репозитория master и experimental). Приложение может потребовать привелегии
root, убедитесь, что пакет `sudo` установлен.
### <a href="#gui_configuration" class="anchor" id="gui_configuration"><span class="octicon octicon-link"></span></a>Настройка

View File

@ -28,11 +28,16 @@ links:
---
<!-- info block -->
Набор минималистичных легко настраиваемых пламоидов, написанных на `C++/Qt`. Они выглядят, как виджеты в [Awesome WM](//awesome.naquadah.org/ "Домашняя страница Awesome"). Также пакет предоставляет дополнительный системный [DataEngine](//techbase.kde.org/Development/Tutorials/Plasma/DataEngines "Мануал для разработчиков").
Набор минималистичных легко настраиваемых пламоидов, написанных на `C++/Qt`. Они
выглядят, как виджеты в [Awesome WM](//awesome.naquadah.org/ "Домашняя страница
Awesome"). Также пакет предоставляет дополнительный системный [DataEngine]
(//techbase.kde.org/Development/Tutorials/Plasma/DataEngines "Мануал для
разработчиков").
<!--more-->
**ВНИМАНИЕ:** [НУЖНЫ ПЕРЕВОДЧИКИ!](//github.com/arcan1s/awesome-widgets/issues/14 "Тикет")
**ВНИМАНИЕ:** [НУЖНЫ ПЕРЕВОДЧИКИ!](//github.com/arcan1s/awesome-widgets/issues/14
"Тикет")
**Совместим с Plasma 5!**
@ -47,7 +52,8 @@ links:
### <a href="#changelog" class="anchor" id="changelog"><span class="octicon octicon-link"></span></a>Список изменений
[CHANGELOG-RU](//github.com/arcan1s/awesome-widgets/blob/master/CHANGELOG-RU "GitHub")
[CHANGELOG-RU](//github.com/arcan1s/awesome-widgets/blob/master/CHANGELOG-RU
"GitHub")
<!-- end of info block -->
@ -56,7 +62,8 @@ links:
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
* Скачайте [архив](//github.com/arcan1s/awesome-widgets/releases "GitHub") с актуальной версией исходных файлов.
* Скачайте [архив](//github.com/arcan1s/awesome-widgets/releases "GitHub") с
актуальной версией исходных файлов.
* Извлеките из него файлы и установите:
```bash
@ -67,7 +74,8 @@ links:
sudo make install
```
**ВНИМАНИЕ:** Для Plasma 5, вероятно, потребуется флаг `-DKDE_INSTALL_USE_QT_SYS_PATHS=ON`
**ВНИМАНИЕ:** Для Plasma 5, вероятно, потребуется флаг
`-DKDE_INSTALL_USE_QT_SYS_PATHS=ON`
### <a href="#dependencies" class="anchor" id="dependencies"><span class="octicon octicon-link"></span></a>Зависимости
@ -77,7 +85,8 @@ links:
* cmake *(make)*
* extra-cmake-modules *(make)*
* hddtemp **или** smartmontools *(опционально, для контроля за температурой HDD)*
* один из поддерживаемых музыкальных плееров *(опционально, для контроля за музыкальным плеером)*
* один из поддерживаемых музыкальных плееров *(опционально, для контроля за
музыкальным плеером)*
* проприетарный видеодрайвер *(опционально, для контроля за GPU)*
<!-- end of install block -->
@ -89,7 +98,9 @@ links:
### <a href="#tips" class="anchor" id="tips"><span class="octicon octicon-link"></span></a>Tips & tricks
Вы можете использовать несколько цветов в тексте. Просто вставьте нужный текст в html код. Смотри [вопрос](//github.com/arcan1s/awesome-widgets/issues/9 "GitHub") для более подробной информации.
Вы можете использовать несколько цветов в тексте. Просто вставьте нужный текст в
html код. Смотри [вопрос](//github.com/arcan1s/awesome-widgets/issues/9 "GitHub")
для более подробной информации.
<!-- end of howto block -->
@ -98,7 +109,10 @@ links:
### <a href="#deconf" class="anchor" id="deconf"><span class="octicon octicon-link"></span></a>Настройка DataEngine
Вы можете отредактировать настройки DataEngine, которые хранятся в `/etc/xdg/plasma-dataengine-extsysmon.conf` и `$HOME/.config/plasma-dataengine-extsysmon.conf`. Раскомментируйте необходимые строчки и отредактируйте их.
Вы можете отредактировать настройки DataEngine, которые хранятся в
`/etc/xdg/plasma-dataengine-extsysmon.conf` и
`$HOME/.config/plasma-dataengine-extsysmon.conf`. Раскомментируйте необходимые
строчки и отредактируйте их.
### <a href="#deoptions" class="anchor" id="deoptions"><span class="octicon octicon-link"></span></a>Опции DataEngine
@ -115,7 +129,8 @@ links:
### <a href="#widconf" class="anchor" id="widconf"><span class="octicon octicon-link"></span></a>Настройка виджета
Для настройки внешнего вида Вы должны открыть окно настроек и установить требуемый формат текста. HTML теги обрабатываются корректно.
Для настройки внешнего вида Вы должны открыть окно настроек и установить
требуемый формат текста. HTML теги обрабатываются корректно.
Доступные флаги приведены в таблице ниже.
@ -218,7 +233,9 @@ links:
### <a href="#lambda" class="anchor" id="lambda"><span class="octicon octicon-link"></span></a>Лямбда функции
Начиная с версии 3.0.0 основной виджет поддерживает лямбда выражения, которые рассчитываются в рантайме. Они объявляются использованием конструкции `${% raw %}${{{% endraw %} {% raw %}}}{% endraw %}`:
Начиная с версии 3.0.0 основной виджет поддерживает лямбда выражения, которые
рассчитываются в рантайме. Они объявляются использованием конструкции
`${% raw %}${{{% endraw %} {% raw %}}}{% endraw %}`:
```javascript
{% raw %}${{{% endraw %}
@ -230,7 +247,8 @@ three()
{% raw %}}}{% endraw %}
```
Функции внутри будут интерпретированы, как JavaScript, любая переменная из основного набора поддерживается. Так, функция:
Функции внутри будут интерпретированы, как JavaScript, любая переменная из
основного набора поддерживается. Так, функция:
```javascript
{% raw %}${{{% endraw %}
@ -245,7 +263,8 @@ colorCpu()
{% raw %}}}{% endraw %}
```
покажет значение `$cpu` красным, если оно больше 90.0, иначе - покажет цветом по-умолчанию. Также поддерживаются произвольные вычисления:
покажет значение `$cpu` красным, если оно больше 90.0, иначе - покажет цветом
по-умолчанию. Также поддерживаются произвольные вычисления:
```javascript
{% raw %}${{{% endraw %}
@ -253,7 +272,10 @@ $down - $up
{% raw %}}}{% endraw %}
```
покажет разность между скоростями загрузки и отдачи. Другая особенность, предоставляемая лямбда выражениями - тег `$this`, который вернет последнее значение данной лямбда функции. Ниже чуть более сложный пример, который покажет бегущую строку "Артист - Название" с длиной меньшей либо равной 10 символам:
покажет разность между скоростями загрузки и отдачи. Другая особенность,
предоставляемая лямбда выражениями - тег `$this`, который вернет последнее
значение данной лямбда функции. Ниже чуть более сложный пример, который покажет
бегущую строку "Артист - Название" с длиной меньшей либо равной 10 символам:
```javascript
{% raw %}${{{% endraw %}
@ -269,31 +291,43 @@ runningLine()
{% raw %}}}{% endraw %}
```
Таким образом, лямбда выражения могут быть использованы, например, чтобы показывать произвольное значение, которое будет рассчитано в рантайме, или, чтобы показать различную информацию, в зависимости от некоторых условий. Однако, пожалуйста, учитывайте, что подобные вычисления в рантайме могут увеличить нагрузку на CPU.
Таким образом, лямбда выражения могут быть использованы, например, чтобы
показывать произвольное значение, которое будет рассчитано в рантайме, или,
чтобы показать различную информацию, в зависимости от некоторых условий. Однако,
пожалуйста, учитывайте, что подобные вычисления в рантайме могут увеличить
нагрузку на CPU.
### <a href="#advanced" class="anchor" id="advanced"><span class="octicon octicon-link"></span></a>Расширенные настройки
**Включить фон:** Снимите галочку, чтобы отключить стандартный фон виджета и установить прозрачный. По умолчанию `true`.
**Включить фон:** Снимите галочку, чтобы отключить стандартный фон виджета и
установить прозрачный. По умолчанию `true`.
**Переводить строки:** Переводить или нет строковые теги. По умолчанию `true`.
**Заменить символ перевода строки:** Заменить `\n` на `&#60;br&#62;`. По умолчанию `false`.
**Заменить символ перевода строки:** Заменить `\n` на `&#60;br&#62;`. По
умолчанию `false`.
**Перенос слов:** Включить перенос слов. По умолчанию `false`.
**Включить всплывающие сообщения:** Снимите галочку, если вы не хотите всплывающих сообщений на системные события. По умолчанию `true`.
**Включить всплывающие сообщения:** Снимите галочку, если вы не хотите
всплывающих сообщений на системные события. По умолчанию `true`.
**Проверять обновления:** Проверять или нет обновления при запуске. По умолчанию `true`.
**Проверять обновления:** Проверять или нет обновления при запуске. По умолчанию
`true`.
**Высота виджета:** Отключит автоматическое определение высоты виджета и установит ее в данное значение. По умолчанию `0` (автоматически).
**Высота виджета:** Отключит автоматическое определение высоты виджета и
установит ее в данное значение. По умолчанию `0` (автоматически).
**Ширина виджета:** Отключит автоматическое определение ширины виджета и установит ее в данное значение. По умолчанию `0` (автоматически).
**Ширина виджета:** Отключит автоматическое определение ширины виджета и
установит ее в данное значение. По умолчанию `0` (автоматически).
**Интервал обновления:** Интервал обновления виджета, мс. По умолчанию `1000`.
**Очередь сообщений:** Использовать указанное количество тредов в пуле. `0` означает идеальное количество тредов. По умолчанию `0`.
**Очередь сообщений:** Использовать указанное количество тредов в пуле. `0`
означает идеальное количество тредов. По умолчанию `0`.
**Температурные единицы:** Выберете единицы температуры. Доступные единицы следующие: Цельсий, Фаренгейт и Кельвин.
**Температурные единицы:** Выберете единицы температуры. Доступные единицы
следующие: Цельсий, Фаренгейт и Кельвин.
**Свой формат времени:**
@ -332,29 +366,42 @@ runningLine()
| `$mm` | Минуты аптайма. |
| `$m` | Минуты аптайма без нуля. |
**AC online тег:** Строка, которая будет показана, когда AC онлайн. По умолчанию `(*)`.
**AC online тег:** Строка, которая будет показана, когда AC онлайн. По умолчанию
`(*)`.
**AC offline тег:** Строка, которая будет показана, когда AC оффлайн. По умолчанию `( )`.
**AC offline тег:** Строка, которая будет показана, когда AC оффлайн. По
умолчанию `( )`.
### <a href="#tooltips" class="anchor" id="tooltips"><span class="octicon octicon-link"></span></a>Тултипы
Начиная с версии 1.7.0, поля CPU, частота CPU, память, swap, сеть и батарея поддерживают графический тултип (всплывающая подсказка). Чтобы включить их, просто поставьте нужные галочки. Число хранимых значений может быть установлено во вкладке. Также есть возможность настроить цвета графиков.
Начиная с версии 1.7.0, поля CPU, частота CPU, память, swap, сеть и батарея
поддерживают графический тултип (всплывающая подсказка). Чтобы включить их,
просто поставьте нужные галочки. Число хранимых значений может быть установлено
во вкладке. Также есть возможность настроить цвета графиков.
### <a href="#deguiconf" class="anchor" id="deguiconf"><span class="octicon octicon-link"></span></a>Настройка DataEngine
**Устройства ACPI:** Путь к устройствам ACPI. По умолчанию `/sys/class/power_supply/`.
**Устройство GPU:** Выберете одно из поддерживаемых устройств GPU. `auto` включит автоматическое определение устройства, `disable` отключит все мониторы GPU. По умолчанию `auto`.
**Устройство GPU:** Выберете одно из поддерживаемых устройств GPU. `auto`
включит автоматическое определение устройства, `disable` отключит все мониторы
GPU. По умолчанию `auto`.
**HDD:** Выберете один из HDD для монитора температуры HDD. `all` включит монитор для всех доступных устройств, `disable` отключит монитор температуры HDD. По умолчанию `all`.
**HDD:** Выберете один из HDD для монитора температуры HDD. `all` включит
монитор для всех доступных устройств, `disable` отключит монитор температуры HDD.
По умолчанию `all`.
**Команда hddtemp:** Введите команду, которая будет запущена для hddtemp DataEngine. По умолчанию `sudo hddtemp`.
**Команда hddtemp:** Введите команду, которая будет запущена для hddtemp
DataEngine. По умолчанию `sudo hddtemp`.
**Количество символов для плеера:** Количество символов, которые будут показываться в динамических тегах плеера.
**Количество символов для плеера:** Количество символов, которые будут
показываться в динамических тегах плеера.
**Музыкальный плеер:** Выберете один из поддерживаемых музыкальных плееров для соответствующего поля.
**Музыкальный плеер:** Выберете один из поддерживаемых музыкальных плееров для
соответствующего поля.
**MPRIS:** Выберете имя плеера MPRIS. `auto` включит автоматическое определение плеера. По умолчанию `auto`.
**MPRIS:** Выберете имя плеера MPRIS. `auto` включит автоматическое определение
плеера. По умолчанию `auto`.
**Адрес MPD:** Адрес MPD сервера. По умолчанию `localhost`.
@ -362,25 +409,32 @@ runningLine()
### <a href="#desktoppanel" class="anchor" id="desktoppanel"><span class="octicon octicon-link"></span></a>Desktop panel
Начиная с версии 1.11.0 виджеты предоставляют панель для мониторинга за рабочими столами. И да, он выглядит, как аналогичная панель в Awesome.
Начиная с версии 1.11.0 виджеты предоставляют панель для мониторинга за рабочими
столами. И да, он выглядит, как аналогичная панель в Awesome.
### <a href="#dpconf" class="anchor" id="dpconf"><span class="octicon octicon-link"></span></a>Настройка Desktop panel
**Включить фон:** Снимите галочку, чтобы отключить стандартный фон виджета и установить прозрачный. По умолчанию `true`.
**Включить фон:** Снимите галочку, чтобы отключить стандартный фон виджета и
установить прозрачный. По умолчанию `true`.
**Вертикальная разметка:** Использовать вертикальную разметку вместо горизонтальной. По умолчанию `false`.
**Вертикальная разметка:** Использовать вертикальную разметку вместо
горизонтальной. По умолчанию `false`.
**Высота виджета:** Отключит автоматическое определение высоты виджета и установит ее в данное значение. По умолчанию `0` (автоматически).
**Высота виджета:** Отключит автоматическое определение высоты виджета и
установит ее в данное значение. По умолчанию `0` (автоматически).
**Ширина виджета:** Отключит автоматическое определение ширины виджета и установит ее в данное значение. По умолчанию `0` (автоматически).
**Ширина виджета:** Отключит автоматическое определение ширины виджета и
установит ее в данное значение. По умолчанию `0` (автоматически).
**Метка** Введите символ (или строку), которая будет показана, если данный рабочий стол сейчас активен.
**Метка** Введите символ (или строку), которая будет показана, если данный
рабочий стол сейчас активен.
**Тип тултипа:** Тип превью, по умолчанию `Окна`.
**Ширина тултипа:** Ширина тултипа в пикселях. По умолчанию `200px`.
**Цвет тултипа:** Цвет, который будет использован в некоторых типах тултипа. По умолчанию `#ffffff`.
**Цвет тултипа:** Цвет, который будет использован в некоторых типах тултипа.
По умолчанию `#ffffff`.
**Теги шаблона**

View File

@ -17,7 +17,11 @@ links:
---
<!-- info block -->
Плазмоид, написанный на `CPP` который показывает случайные карты из Brian Eno и Peter Schmidt's [Oblique Strategies](//en.wikipedia.org/wiki/Oblique_strategies "Wiki"). Это форк [апплета для GNOME](//gnome-look.org/content/show.php/Oblique+Strategies?content=78405 "gnome-look") с некоторыми дополнительными фичами.
Плазмоид, написанный на `CPP` который показывает случайные карты из Brian Eno и
Peter Schmidt's [Oblique Strategies](//en.wikipedia.org/wiki/Oblique_strategies
"Wiki"). Это форк [апплета для GNOME]
(//gnome-look.org/content/show.php/Oblique+Strategies?content=78405 "gnome-look")
с некоторыми дополнительными фичами.
<!--more-->
@ -37,7 +41,8 @@ links:
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
* Скачайте [архив](//github.com/arcan1s/oblikuestrategies/releases "GitHub") с актуальной версией исходных файлов.
* Скачайте [архив](//github.com/arcan1s/oblikuestrategies/releases "GitHub") с
актуальной версией исходных файлов.
* Извлеките из него файлы и установите приложение. Для глобальной установки наберите:
```bash
@ -64,7 +69,8 @@ links:
kquitapp plasma-desktop && sleep 2 && plasma-desktop
```
Также Вам может потребоваться запустить `kbuildsycoca4`, чтобы распознать `*.desktop` файл:
Также Вам может потребоваться запустить `kbuildsycoca4`, чтобы распознать
`*.desktop` файл:
```bash
kbuildsycoca4 &> /dev/null

View File

@ -58,7 +58,8 @@ Parameters:
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
* Скачайте [архив](//github.com/arcan1s/queued/releases "GitHub") с актуальной версией исходных файлов.
* Скачайте [архив](//github.com/arcan1s/queued/releases "GitHub") с актуальной
версией исходных файлов.
* Извлеките из него файлы и установите приложение:
```bash
@ -97,7 +98,8 @@ systemctl start queued
systemctl enable queued
```
Но Вы можете изменить путь к конфигурационному файлу или изменить параметры. Для этого, скопируйте (рекомендуется) исходный конфигурационный файл
Но Вы можете изменить путь к конфигурационному файлу или изменить параметры. Для
этого, скопируйте (рекомендуется) исходный конфигурационный файл
```bash
cp /etc/queued.conf /новый/путь/к/queued.conf
@ -124,15 +126,18 @@ ExecStart=/usr/bin/queued -c /path/to/new/queued.conf
### <a href="#adding" class="anchor" id="adding"><span class="octicon octicon-link"></span></a>Добавление задачи
1. Создайте скрипт с командой (например, с именем `script.sh`).
2. Создайте файл с приоритетом (`script.sh.pr`) для данной задачи, если это необходимо.
3. Создайте файл с именем пользователя (`script.sh.user`) для данной задачи, если это необходимо
2. Создайте файл с приоритетом (`script.sh.pr`) для данной задачи, если это
необходимо.
3. Создайте файл с именем пользователя (`script.sh.user`) для данной задачи, если
это необходимо
4. Скопируйте файлы в `$WORKDIR`
Также Вы можете воспользоваться `add_queued`.
## <a href="#configuration" class="anchor" id="configuration"><span class="octicon octicon-link"></span></a>Настройка
Все настройки хранятся в `/etc/queued.conf`. После редактирования, Вы должны перезапустить демон
Все настройки хранятся в `/etc/queued.conf`. После редактирования, Вы должны
перезапустить демон
```bash
systemctl restart queued

View File

@ -21,11 +21,16 @@ links:
---
<!-- info block -->
Графическая оболочка для `netctl` (набор скриптов для поднятия сети в Arch'е). Написана на `C++` с использованием библиотеки `Qt`. На текущим момент умеет работать с профилями, в том числе создавать новые, а также умеет подключаться к WiFi. Также предоставляет библиотеку для взаимодействия с netctl и виджет и DataEngine для KDE.
Графическая оболочка для `netctl` (набор скриптов для поднятия сети в Arch'е).
Написана на `C++` с использованием библиотеки `Qt`. На текущим момент умеет
работать с профилями, в том числе создавать новые, а также умеет подключаться к
WiFi. Также предоставляет библиотеку для взаимодействия с netctl, виджет и
DataEngine для KDE.
<!--more-->
**ВНИМАНИЕ:** [НУЖНЫ ПЕРЕВОДЧИКИ!](//github.com/arcan1s/netctl-gui/issues/3 "Тикет")
**ВНИМАНИЕ:** [НУЖНЫ ПЕРЕВОДЧИКИ!](//github.com/arcan1s/netctl-gui/issues/3
"Тикет")
```bash
$ netctl-gui --help
@ -92,8 +97,10 @@ netctlgui-helper [ options ]
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
* Скачайте [архив](//github.com/arcan1s/netctl-gui/releases "GitHub") с актуальной версией исходных файлов.
* Извлеките из него файлы и установите приложение. Если Вы хотите установить в `/`, Вы должны запустить как root:
* Скачайте [архив](//github.com/arcan1s/netctl-gui/releases "GitHub") с
актуальной версией исходных файлов.
* Извлеките из него файлы и установите приложение. Если Вы хотите установить в
`/`, Вы должны запустить как root:
```bash
cd /путь/к/распакованному/архиву
@ -115,9 +122,11 @@ netctlgui-helper [ options ]
* `-DBUILD_DOCS:BOOL=0` - не собирать документацию разработчика
* `-DBUILD_TEST:BOOL=1` - собирать авто тесты для библиотеки и хелпера
* свойства проекта:
* `-DDBUS_SYSTEMCONF_PATH=/etc/dbus-1/system.d/` - путь к системный файлам конфигурации DBus
* `-DDBUS_SYSTEMCONF_PATH=/etc/dbus-1/system.d/` - путь к системный
файлам конфигурации DBus
* `-DSYSTEMD_SERVICE_PATH=lib/systemd/system` - путь к сервису systemd
* `-DUSE_CAPABILITIES:BOOL=0` - не использовать setcap, чтобы дать необходимые привилегии хелперу
* `-DUSE_CAPABILITIES:BOOL=0` - не использовать setcap, чтобы дать
необходимые привилегии хелперу
* `-DBUILD_KDE4:BOOL=1` - собирать виджет под KDE4 вместо KF5
* `-DUSE_QT5:BOOL=0` - использовать Qt4 вместо Qt5
@ -140,26 +149,34 @@ netctlgui-helper [ options ]
<!-- howto block -->
## <a href="#howto" class="anchor" id="howto"><span class="octicon octicon-link"></span></a>Использование
Просто запустите приложение `netctl-gui`. Если потребуется (и если Вы используете KDE), можете добавить виджет `netctl`, предоставляемый приложением.
Просто запустите приложение `netctl-gui`. Если потребуется (и если Вы
используете KDE), можете добавить виджет `netctl`, предоставляемый приложением.
<!-- end of howto block -->
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Настройка
Рекомендуется использовать графический интерфейс для настройки. Конфигурационные файлы:
Рекомендуется использовать графический интерфейс для настройки. Конфигурационные
файлы:
* Графический интерфейс и хелпер
* `$HOME/.config/netctl-gui.conf` - пользовательские настройки GUI/хелпера
* `/etc/netctl-gui.conf` - системные настройки хелпера
* DataEngine (KDE4 версия)
* `$KDEHOME/share/config/plasma-dataengine-netctl.conf` - пользовательские настройки DataEngine
* `$KDESYSTEM/share/config/plasma-dataengine-netctl.conf` - системные настройки DataEngine
* `$KDEHOME/share/config/plasma-dataengine-netctl.conf` - пользовательские
настройки DataEngine
* `$KDESYSTEM/share/config/plasma-dataengine-netctl.conf` - системные
настройки DataEngine
* DataEngine (KF5 версия)
* `$HOME/.config/plasma-dataengine-netctl.conf` - пользовательские настройки DataEngine
* `$HOME/.config/plasma-dataengine-netctl.conf` - пользовательские настройки
DataEngine
* `/etc/xdg/plasma-dataengine-netctl.conf` - системные настройки DataEngine
Для настройки виджета и DataEngine рекомендуется использовать графический интерфейс. Все настройки графического интерфейса хранятся в `$HOME/.config/netctl-gui.conf`. Для редактирования настоятельно рекомендуется использовать графический интерфейс.
Для настройки виджета и DataEngine рекомендуется использовать графический
интерфейс. Все настройки графического интерфейса хранятся в
`$HOME/.config/netctl-gui.conf`. Для редактирования настоятельно рекомендуется
использовать графический интерфейс.
<!-- end of config block -->

View File

@ -15,7 +15,11 @@ links:
---
<!-- info block -->
Приложение/библиотека, написанное на Qt, которое позволяет пользователям отправлять багрепорт для проектов, расположенных на GitHub. Оно может работать как через [GitHub](//github.com "GitHub"), так и через [GitReports](//gitreports.com "GitReports"). Работает нормально, однако данное приложение было создано as proof-of-concept.
Приложение/библиотека, написанное на Qt, которое позволяет пользователям
отправлять багрепорт для проектов, расположенных на GitHub. Оно может работать
как через [GitHub](//github.com "GitHub"), так и через [GitReports]
(//gitreports.com "GitReports"). Работает нормально, однако данное приложение
было создано as proof-of-concept.
<!--more-->
@ -34,9 +38,11 @@ links:
## <a href="#install" class="anchor" id="install"><span class="octicon octicon-link"></span></a>Установка
### <a href="#instruction" class="anchor" id="instruction"><span class="octicon octicon-link"></span></a>Инструкция
### <a href="#singleapp" class="anchor" id="singleapp"><span class="octicon octicon-link"></span></a>Сборка, как отдельное приложение
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с актуальной версией исходных файлов.
#### <a href="#singleapp" class="anchor" id="singleapp"><span class="octicon octicon-link"></span></a>Сборка, как отдельное приложение
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с
актуальной версией исходных файлов.
* Извлеките из него файлы и настройте под себя.
* Установите приложение:
@ -48,9 +54,10 @@ links:
sudo make install
```
### <a href="#aslibrary" class="anchor" id="aslibrary"><span class="octicon octicon-link"></span></a>Сборка, как библиотека в проекте
#### <a href="#aslibrary" class="anchor" id="aslibrary"><span class="octicon octicon-link"></span></a>Сборка, как библиотека в проекте
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с актуальной версией исходных файлов.
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с
актуальной версией исходных файлов.
* Извлеките из него файлы и настройте под себя.
* Включите библиотеку в Ваш проект. Например, если Вы используете `cmake`:
@ -86,7 +93,8 @@ links:
* automoc4 *(make)*
* cmake *(make)*
* doxygen *(make, документация)*
* qt5-webkit (если используется Qt5) **или** qtwebkit (если используется Qt4) *(опционально, требуется для модуля GitReports)*
* qt5-webkit (если используется Qt5) **или** qtwebkit (если используется Qt4)
*(опционально, требуется для модуля GitReports)*
<!-- end of install block -->
@ -95,16 +103,22 @@ links:
### <a href="#github" class="anchor" id="github"><span class="octicon octicon-link"></span></a>Модуль GitHub
Данный модуль создает тикет, используя [GitHub API](//developer.github.com/v3/issues/ "Документация"). Данный модуль требует авторизации пользователя. Типичный POST запрос выглядит так:
Данный модуль создает тикет, используя [GitHub API](//developer.github.com/v3/issues/
"Документация"). Данный модуль требует авторизации пользователя. Типичный POST
запрос выглядит так:
```bash
curl -X POST -u user:pass -d '{"title":"A new bug","body":"Some error occurs"}' \
//api.github.com/repos/owner/repo/issues
```
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITHUB=0` флаг cmake.
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITHUB=0` флаг
cmake.
Также данный модуль может отправлять запросы, используя токен разработчика. Пожалуйста, посетите [данную страницу](//github.com/settings/applications "Настройки") и сгенерируйте токен. Требуемые права для токена - **public_repo** (или **repo**, если Вы используете для приватных репозиториев).
Также данный модуль может отправлять запросы, используя токен разработчика.
Пожалуйста, посетите [данную страницу](//github.com/settings/applications
"Настройки") и сгенерируйте токен. Требуемые права для токена - **public_repo**
(или **repo**, если Вы используете для приватных репозиториев).
**Имейте в виду, что передача токена в открытом виде может скомпрометировать его!**
@ -115,43 +129,61 @@ curl -X POST -H "Authorization: token token" -d '{"title":"A new bug","body":"So
//api.github.com/repos/owner/repo/issues
```
Для того, чтобы включить данный модуль, используйте `-DOWN_GITHUB_TOKEN=STRING` флаг cmake.
Для того, чтобы включить данный модуль, используйте `-DOWN_GITHUB_TOKEN=STRING`
флаг cmake.
Данный модуль требует наличия в системе `QtNetwork`.
### <a href="#gitreports" class="anchor" id="gitreports"><span class="octicon octicon-link"></span></a>Модуль GitReports
Данный модуль создает тикет, используя возможности [GitReports](//gitreports.com/about "GitReports"). Пожалуйста, посетите [данную страницу](//gitreports.com/ "GitReports") и настройте под Ваши репозитории.
Данный модуль создает тикет, используя возможности [GitReports]
(//gitreports.com/about "GitReports"). Пожалуйста, посетите [данную страницу]
(//gitreports.com/ "GitReports") и настройте под Ваши репозитории.
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITREPORT=0` флаг cmake. Данный модуль требует наличия в системе `QtNetwork` и `QtWebKit`.
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITREPORT=0` флаг
cmake. Данный модуль требует наличия в системе `QtNetwork` и `QtWebKit`.
<!-- end of howto block -->
<!-- config block -->
## <a href="#config" class="anchor" id="config"><span class="octicon octicon-link"></span></a>Настройка
Для настройки перед компиляцией отредактируйте хидер `src/config.h`. Также Вы можете подгрузить параметры автоматически, используя массив `params` (необходимые ключи такие же, как и для хидера).
Для настройки перед компиляцией отредактируйте хидер `src/config.h`. Также Вы
можете подгрузить параметры автоматически, используя массив `params`
(необходимые ключи такие же, как и для хидера).
### <a href="#mainconfig" class="anchor" id="mainconfig"><span class="octicon octicon-link"></span></a>Основные настройки
* `OWNER` - владелец репозитория.
* `PROJECT` - имя проекта.
* `TAG_BODY` - тело тикета по умолчанию. Может быть использовано в обоих модулях.
* `TAG_TITLE` - имя тикета по умолчанию. Может быть использовано только в модуле GitHub.
* `TAG_ASSIGNEE` - прикрепить тикет к данному аккаунту. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
* `TAG_LABELS` - установить данные метки тикету. Метки должны быть разделены запятыми. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
* `TAG_MILESTONE` - установить данную веху тикету. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
* `TAG_TITLE` - имя тикета по умолчанию. Может быть использовано только в модуле
GitHub.
* `TAG_ASSIGNEE` - прикрепить тикет к данному аккаунту. Может быть использовано
только в модуле GitHub. Данный тег будет работать, только если пользователь имеет
права на запись. Если будет пустым, будет проигнорировано.
* `TAG_LABELS` - установить данные метки тикету. Метки должны быть разделены
запятыми. Может быть использовано только в модуле GitHub. Данный тег будет
работать, только если пользователь имеет права на запись. Если будет пустым,
будет проигнорировано.
* `TAG_MILESTONE` - установить данную веху тикету. Может быть использовано только
в модуле GitHub. Данный тег будет работать, только если пользователь имеет права
на запись. Если будет пустым, будет проигнорировано.
### <a href="#githubconfig" class="anchor" id="githubconfig"><span class="octicon octicon-link"></span></a>Настройки модуля GitHub
* `GITHUB_COMBOBOX` - текст модуля в ComboBox.
* `ISSUES_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию `//api.github.com/repos/$OWNER/$PROJECT/issues`. Доступные теги `$PROJECT`, `$OWNER`.
* `ISSUES_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию
`//api.github.com/repos/$OWNER/$PROJECT/issues`. Доступные теги `$PROJECT`,
`$OWNER`.
### <a href="#gitreportsconfig" class="anchor" id="gitreportsconfig"><span class="octicon octicon-link"></span></a>Настройки модуля GitReports
* `CAPTCHA_URL` - URL капчи, в большинстве случаев, не редактируйте его. По умолчанию `//gitreports.com/simple_captcha?code=`.
* `CAPTCHA_URL` - URL капчи, в большинстве случаев, не редактируйте его. По
умолчанию `//gitreports.com/simple_captcha?code=`.
* `GITREPORT_COMBOBOX` - текст модуля в ComboBox.
* `PUBLIC_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию `//gitreports.com/issue/$OWNER/$PROJECT`. Доступные теги `$PROJECT`, `$OWNER`.
* `PUBLIC_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию
`//gitreports.com/issue/$OWNER/$PROJECT`. Доступные теги `$PROJECT`, `$OWNER`.
<!-- end of config block -->