分类 系统管理 下的文章

【原创】Windows10下Emacs安装与配置中遇到问题的解决

个人原创,如有转载,请注明出处。

——by realasking

最近需要使用python做一个规模较大的脚本,之前那种采用某种编辑器写完脚本后再执行看结果的做法已经不再合适,我需要一个自由度较高的python的ide。在考察了若干ide后,最后我选择了Emacs,不过,Linux下的配置比较成功,而Windows下则遇到了一些问题,这里对解决过程做了一点记录。

如何右键打开文件

GNU组织提供了一个官方解决方案: MsWindowsGlobalContextMenu

操作如下:

  1. 根据实际情况,我建立了注册表文件rightclick.reg,内容如下:
Windows Registry Editor Version 5.00
;; Be sure to set the correct path to Emacs on your system!
[HKEY_CURRENT_USER\Software\Classes\*\shell]

;; Open file in existing frame
[HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopencurrentframe]
@=&Emacs: Open File
icon=D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\emacsclientw.exe
[HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopencurrentframe\command]
@=D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\emacsclientw.exe -n --alternate-editor=\D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\runemacs.exe\ \%1\

;; Open file in new frame
[HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopennewframe]
@=&Emacs: Open in new Window
icon=D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\emacsclientw.exe
[HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopennewframe\command]
@=D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\emacsclientw.exe -n --alternate-editor=\D:\\Program Files\\Emacs\\emacs-26.2-x86_64\\bin\\runemacs.exe\ -c \%1\
  1. D:\Program Files\Emacs\emacs-26.2-x86_64\bin下建立runemacs.exe的快捷方式,然后拷贝到shell:startup
  2. 重启电脑

显示字体太小

解决方法:

Options->Set Default font,选择微软雅黑,字号设置为14,然后Save Options

Emacs启动窗口太小

如果直接运行runemacs.exe启动Emacs,有很多方法设置启动窗口大小和位置,但是在Windows下通过emacsclientw.exe来启动,这些方法基本都无效,唯一有效的方法是将Emacs启动窗口设为最大化,做法是将如下语句添加到init.el中:

(add-hook 'window-setup-hook 'toggle-frame-fullscreen t)
(add-to-list 'default-frame-alist '(fullscreen . maximized))

之所以一定要使用服务器-客户端的模式启动Emacs,是因为Windows下Emacs启动实在太慢了。

打开英文和希腊字母混合的文档乱码

解决办法:

1.下载unicad

2.拷贝到.emacs.d/lisp文件夹下

3.将如下语句添加到init.el中:

(push (expand-file-name ~/.emacs.d/lisp) load-path)
(require 'unicad)

2019年在CentOS上架设用systemd管理的anki 2.1同步服务器

个人笔记,如有转载,请注明出处。

——by realasking

最近收到ankiweb的通知,告知因为长时间没有登录,我的账户已经被注销了。我确有用记忆卡片的需要,但是最近太慢,实在顾不上总去使用它,anki的做法让人很无奈。鉴于此,还是决定自己搭建一个anki同步服务器。

github上的tsudoko建立了一个项目[1],可以搭建anki 2.1的同步服务;在archlinuxAUR网站上,s7hoang则对它进行了规范化的打包[2],可以使用systemd来启动和管理这一同步服务器。不过,CentOSArchlinux有一些不同,s7hoang的方案用在CentOS服务器上需要做一定的调整。

s7hoang的方案进行小调整后,我在CentOS 7服务器上安装anki-sync-server的过程如下。

1. 准备软件包

a.下载s7hoangAUR

[realasking@myserver]$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/anki-sync-server-git.tar.gz
[realasking@myserver]$ tar -xzvf anki-sync-server-git.tar.gz
[realasking@myserver]$ cd anki-sync-server-git

b.准备服务器包

  • 修改s7hoang提供的anki-sync-server.service,内容改为:
[Unit]
Description=A sync server for anki
After=network.target

[Service]
Type=simple
User=anki-sync-server
Group=anki-sync-server
WorkingDirectory=/opt/anki-sync-server
ExecStart=/usr/bin/python36 -m ankisyncd
StartLimitIntervalSec=1
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  • 根据s7hoang的方法创立脚本genpack.sh,内容如下:
#!/bin/bash 
git clone https://github.com/tsudoko/anki-sync-server
cd anki-sync-server
mkdir -p "plugins/anki2.0"
mkdir -p "plugins/anki2.1/ankisyncd"
mkdir -p "plugins/systemd"
cp ../anki-sync-server.py "plugins/anki2.0"
cp ../__init__.py "plugins/anki2.1/ankisyncd"
cp ../anki-sync-server.service "plugins/systemd"
sed -i "2s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.0/anki-sync-server.py
sed -i "3s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.0/anki-sync-server.py
sed -i "3s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.1/ankisyncd/__init__.py
sed -i "s/python/python36/g" ankisyncctl.py

git submodule update --init

然后执行这个脚本。

  • 建立nginx服务器脚本anki.conf,内容如下:
server {
        listen 80;
        server_name anki.myserver.tk;
        return 301 https://$server_name$request_uri;
}

server {
    # Allow access via HTTPS
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Set server names for access
    server_name anki.服务器名.tk;

    # Set TLS certificates to use for HTTPS access
    ssl_certificate /etc/letsencrypt/live/服务器名.tk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/服务器名.tk/privkey.pem;

    location / {
        # Prevent nginx from rejecting larger media files
        client_max_body_size 0;

        proxy_pass http://127.0.0.1:27701;
    }
}

2. 部署服务器

  • root登录服务器,将anki-sync-server文件夹拷贝到/opt

  • anki-sync-server.service文件拷贝到/etc/systemd/system

  • anki.conf文件拷贝到:/etc/nginx/conf.d

  • 建立anki用户

[root@myserver]# useradd -d /opt/anki-sync-server -r -s /sbin/nologin anki-sync-server
[root@myserver]# chown -R anki-sync-server /opt/anki-sync-server
[root@myserver]# chgrp -R anki-sync-server /opt/anki-sync-server
[root@myserver]# sudo -u anki-sync-server ./ankisyncctl.py adduser
  • 开启服务
[root@myserver]# systemctl enable anki-sync-server
[root@myserver]# systemctl start anki-sync-server
[root@myserver]# systemctl restart nginx

3.关于依赖关系

依赖关系的解决本文未提及,因为[1]中已经讲得很清楚了,大家可以直接查阅原作者的叙述。

参考链接

[1] tsudokoanki 2.1同步服务器项目

[2] s7hoangsystemd启动tsudoko服务器的打包

archlinux下配置fluxbox

Tag: linux下的fluxbox桌面配置笔记,老文,不知道现在是否有变动。原始发布于:archlinux下配置fluxbox

初次安装archlinux,并在其上配置了fluxbox环境,这里做一点总结,希望对大家有用,同时发在这里和百度linux、archlinux吧,未经许可,请勿转载。
——by realasking

fluxbox是一个小巧、便捷的窗口管理器,很适合archlinux这种轻量级的linux发行版,配合kde桌面环境提供的高质量程序,可以在最少资源占用的情况下获得最好的运行效果,可谓珠连璧合,这里,结合前几天安装配置archlinux的过程,做一个小结。

对于fluxbox的配置,可以分为三个部分:fluxbox和辅助工具的安装,fluxbox的配置,fluxbox周边辅助程序和运行环境的配置,其中第一部分包括fluxbox、fluxbox的主题、必备工具的安装,第二部分包括壁纸、菜单、主题、热键、启动程序等的设置,第三部分包括桌面效果、图标、音量控制、开关机控制、文件关联等,下面即分这三部分来进行叙述。

fluxbox和辅助工具的安装

这里假定已经将pacmanyaourt工具配置好,实现本文操作,至少需要安装以下资源:

主要桌面工具:kdefluxboxopenboxideskmenumakerfehxbindkeys
重要扩展:xcompmgr-danaconkyguakealsa-utilsrootactions-servicemenu-kde4hddtemp
其它:一些字体

安装过程:

#yaourt -S kde fluxbox openbox idesk idesk-extras menumaker feh xcompmgr-dana guake alsa-utils rootactions-servicemenu-kde4 hddtemp

注意:

所有配置文件和安装文件都不用修改,conky待安装完成后自己到sourceforge下载源码编译,需要打开一些编译选项,archlinux提供的编译版本编译的质量太差了,大量选项不可用。
安装xcompmgr-dana而非原版xcompmgr的原因是原版存在很多bug,比如渲染osdlyrics的时候,不能将桌面歌词始终显示在最前面,渲染fcitx输入窗口时也会启动阴影,而且是错误的等。

rootactions-servicemenu-kde4是一个可以在dolphin中以root身份执行一些程序(包括root的dolphin)的dolphin菜单扩展。

刚才写掉了几个:

#yaourt -S xbindkeys archlinux-xdg-menu xscreensaver 

xbindkeys用来设置笔记本功能键,也可以不用,xscreensaver用来配置锁屏幕

fluxbox的配置

现在,编辑/etc/inittab,修改默认运行级为5,并修改登录管理器为kdm,重启计算机后,以普通用户登录,并选择fluxbox,然后注销,以普通用户登录进入failsafe模式进行配置工作。

先生成fluxbox菜单,这里有好几种程序都能完成工作,其中menumakerarchlinux-xdg-menu是我比较喜欢的,以前在Fedora下也用它们,前者可以生成分类很好的菜单,只是都是英文的,后者可以生成中文菜单,不过只是应用程序的菜单,可以将两者的菜单进行结合,或编辑第二个的菜单来扩展一些内容。另外还有一个fluxbox自带的工具fluxbox-generate_menu可以生成有图标的菜单,不过在我从来没成功用过,报一些函数过时之类的错误。

menumaker生成菜单

$mmaker -v Fluxbox

即可在~/.fluxbox下生成menus文件,是fluxbox的菜单,还包括设置、退出等操作.

archlinux-xdg-menu生成菜单

$xdg_menu --fullmenu --format fluxbox --language zh_CN.UTF-8>~/.fluxbox/menu

如果加了--root-menu选项并指明位置,也可以生成完整的fluxbox菜单。

设置壁纸

进入一次fluxbox之后,在终端执行

$fbsetbg 文件名

编辑~/.fluxbox/startup文件,加入fbsetbg -f 文件名
该项应该存在在conky启动语句之后,xcompmgr启动语句之前,且要注意第一次配置时,同文件夹里的lastwallpaer里应该为空或为只包括正确的壁纸文件的那一句,不然就应将多余的内容删除。然后进入fluxbox,从菜单中选择一种style,并修改/usr/share/fluxbox/styles下对应主题中的字体设置,务必设置为系统中可用的一种中文字体,所有字体选项都要修改。

再设置热键

先用xev识别键名

在fluxbox的终端(如konsole)中执行xev,然后按键,查看键名,比如我按Fn+F3就显示:

KeyRelease event, serial 34, synthetic NO, window 0x3a00001, root 0x15d, subw 0x0, time 8900953, (303,-203), 
root:(304,358), state 0x0, keycode 223 (keysym 0x1008ff19, XF86Mail), same_screen YES, XKeysymToKeycode 
returns keycode: 163 XLookupString gives 0 bytes: XFilterEvent returns: False

其中XF86Mail就是键名,如果按空格,则键名是space

再设置Fn+功能键

这个大部分由内核直接接管,但是有部分能够识别键名,却没有功能的,比如我这里的电邮键和媒体键,以媒体键为例,编辑~/.xbindkeysrc,输入:

"/usr/bin/osdlyrics"
XF86Launch1

再在~/.fluxbox/startup文件的fluxbox执行语句(exec fluxboxexec ck-launch-sessionfluxbox,推荐后一种写法)之前输入:

xbindkeys&

加&是因为要让这些程序后台运行,不然在这些程序结束之前,fluxbox就不会自动启动,用xbindkeys设置这些键的原因是也可以用在其它窗口管理环境中而不必修改,不用xbindkeys设置所有快捷键的原因是发现有的快捷键设置在archlinux中会失效,而又确实没有定义过。
然后再在~/.fluxbox/keys中定义热键,按照已有的格式写就是了,只要注意不要再在这里面定义xbindkeys已经定义过的热键,以及用Mod1表示alt和用Mod4表示meta就行了,比如:

Mod4 M :exec konsole -e mutt

表示Meta+M就调用konsole来执行mutt邮件管理程序。

fluxbox桌面图标设置

最好使用idesk,先在~/下建立.ideskrc文件和.idesktop文件夹,.ideskrc文件的内容和格式可以参考/usr/share/idesk/dot.ideskrc文件,快捷方式文件以.lnk结尾,放在.idesktop文件夹里,格式可以参考/usr/share/idesk/default.lnk,在/usr/share/idesk/icons下有一些常用程序的图标可供使用。

将需要的lnk文件都建立后,建议执行:

$chmod 400 ~/.idesktop/*

然后修改~/.ideskrc文件,修改Background.File: ,其后添加为桌面壁纸的路径和文件名,以及Locked: true

如果后面将使用xcompmgr-dana设置阴影效果,可以将文件中的Shadow:设置为false

fluxbox的开机启动程序的设置在~/.fluxbox/startup中进行,大多数守护进程程序都需要后台执行,因此其后需要加&符,另外各启动程序间往往有先后顺序,因此可以在一行中这样用:

sleep 秒数;程序&

这样就先等待这么多秒,然后再执行程序。
另外,也可以执行export 环境变量=变量值;程序&来设定以某环境变量执行程序。

桌面相关设置

实现开关机和休眠

以root用户执行:

#visudo 

添加以下内容:

你的用户名 ALL(root) = ALL
%wheel ALL(ALL) = ALL
你的用户名 ALL(root) = /sbin/poweroff, /sbin/reboot, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate

然后保存,再以普通用户修改菜单文件menu,加上:

[submenu] (关机)
[exec] (重启计算机) {sudo /sbin/reboot}
[exec] (关机) {sudo /sbin/poweroff}
[exec] (挂起) {sudo /usr/sbin/pm-suspend}
[exec] (休眠) {sudo /usr/sbin/pm-hibernate}
[end]

这里也可以在启动过程中加载kde的守护进程,然后用kshutdown来管理开关机,不过我不知道kde4.7中应该加载的进程名和参数,没去查。

关于休眠,如果发生休眠后不能唤醒,应该根据archlinux的wiki去实现用户态的休眠,因为用户态的休眠不涉及Acpi,如果自己机器的acpi功能不能被内核完美支持,或者主板或显卡Bios中本身对acpi支持就存在缺陷,选择用户态的实现,也不会因此影响休眠。另外,如果要实现休眠和挂起,最好将acpid进程加入到rc.conf的开机启动进程中。

修改文件关联

以root用户编辑/usr/bin/xdg-open,将以下内容:

if [ x"$DE" = x"" ]; then
DE=generic
fi

中的generic改为kde,然后保存

桌面监控

conky,记得在桌面壁纸设置前加载,并且要如下设置:

own_window_type desktop
own_window_transparent yes 

argb不要打开。

桌面效果

xcompmgr-dana,在~/.fluxbox/startup中加入:

sleep 5;xcompmgr -Ss -n -Cc &

这一项要在桌面壁纸设置之后、fcitx启动之前完成加载,意思是启动服务器和客户端的透明和模糊特效,但不对dock属性等的窗口加阴影,但是这样设置之后仍然不能让终端等窗口实现真透明的,要实现真透明,还需要加-f参数,实现fading(但我这里没开,因为xcompmgr无法实现blur特效,开终端真透明会影响操作)。

音量控制

kmix,需要在startup中的xmodmap语句的下一句就加上pkill -9 kmix&,然后再加上amixer cset语句和kmix语句启动它,例如:

pkill -9 kmix&
amixer cset numid=1,iface=MIXER 60&
amixer cset numid=14,iface=MIXER 59& 
sleep 6;kmix&

amixer用来设置对应通道的音量,用来临时解决archlinux没有一个完善的声卡启动脚本导致部分机器有的通道音量默认为0的问题(比如外响不响,但是声卡的model的识别却是正确的),numidiface和最大可设音量也可用amixer查询,具体用法可查询alsa的手册或我在linux-ren上的博客内容(该内容好像我没有发在百度的空间中)。

锁屏幕

xscreensaver,在startup文件中加入:

/usr/bin/xscreensaver -no-splash &

在菜单或热键中加入对命令xscreensaver-command --lock的调用就行了,
对于xscreensaver程序具体行为的设置,
执行/usr/bin/xscreensaver-demo来完成。

这样设置之后,fluxbox应该基本就可以用了,需要网络指示的,可以再启动一个nm-applet,这篇文章也就应该结束了,今后一两年内,除必要软件外,也不想再折腾软件应用方面的东西了,还是应该做些更有意义的事儿,谨以此文作为纪念。

RHEL/CentOS上用x11vnc搭建vnc远程桌面服务

Tag: 个人笔记,CentOS/RHEL的远程桌面服务搭建,原始发布于:RHEL/CentOS上用x11vnc搭建vnc远程桌面服务

个人操作笔记,如有转载,请注明出处。
——by realasking

服务器端配置

1.安装

#tar -xzvf x11vnc.tar.gz
#cd x11vnc
#./configure --prefix=/usr
#make
#make install

2.配置

vi /etc/xinetd.d/x11vnc

输入以下内容:

service x11vnc
{
port = 5900
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -o /var/log/x11vnc.log -display :0 -forever -auth /var/gdm/:0.Xauth -localhost -many -bg
disable = no
}

保存,然后执行:

#service xinetd restart

编辑/boot/grub/grub.conf,在kernel行后加上5

客户端配置

3.客户端软件

若用putty
Connection-SSH-Tunnels,source port 5900,Destination 127.0.0.1:5900,Local,Auto,

然后点击Add,并保存

若用cygwin-X

假设cygwin安装到(包括必要的x组件):

E:\cygwin

新建一个快捷方式:CygWin-X,内容是:

E:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe -wgl

启动ssh转发

启动putty; 或者启动CygWin-X,并执行ssh username@host -L 5900:localhost:5900

启动TightVNC Viewer

Server栏填写:localhost
Connection profile选择:High-speed network
然后点击connect

参考链接

Cygwin安装后的若干问题解决办法

Tag:以前安装cygwin后遇到的一些问题的解决办法,原始发布地址是:Cygwin安装后的若干问题解决办法

以前的个人笔记,仅作备忘之用,如有转载,请注明出处

──by realasking

窗口太小,无法全屏

解决:启动cygwin后,在标题栏单击右键,选属性,布局,调整窗口大小

修改bash默认颜色方案时提示:dircolors: no SHELL environment variable, and no shell type option given

解决:在.bashrc中设置:export SHELL="bash"

vim颜色方案不对,背景全灰

解决:修改.vimrc,用"注释掉set t_Co=256,因为cygwin默认不支持256色

vim输入中文串行

解决:修改.vimrc,加入以下内容:

   if &term != "cygwin"
   set ruler
   else
   set noruler
   endif

嗯,这条好像是来自紫霞论坛

Cywin输入、显示中文不正常

解决:修改.inputrc,解除以下几行注释:

    #set meta-flag on
    #set convert-meta off
    #set input-meta on
    #set output-meta on

vim退格键未定义

解决:修改.vimrc,加入:

    set nocp
    set backspace=start,indent,eol

在Cygwin中不能复制和粘贴

解决:一个好的解决方案是使用puttycyg

最新文章

最近回复

  • chill: 感谢,解决问题
  • realasking: 哪里的话,还要非常感...
  • cnfczn: 发送留言报错:in_...
  • cnfczn: 大狮兄666,以前经...
  • realasking: 最近还行啊,就是上网...
  • cnfczn: 大狮兄,好久不见啊....
  • realasking: 您好。有什么问题就在...
  • Eric Chen: 作者你好!最近折腾中...

分类

归档

其它